Files
linux-odyssey/server/src/auth/passwordStrategy.js
T
2023-11-01 21:35:25 +08:00

25 lines
695 B
JavaScript

import bcrypt from 'bcrypt'
import LocalStrategy from 'passport-local'
import { User } from '@linux-odyssey/models'
async function verifyPassword(username, password, done) {
try {
const user = await User.findOne({
$or: [{ username }, { email: username }],
})
if (!user) {
return done(null, false, { message: 'Incorrect username or password.' })
}
const isPasswordValid = await bcrypt.compare(password, user.hashedPassword)
if (!isPasswordValid) {
return done(null, false, { message: 'Incorrect username or password.' })
}
return done(null, user)
} catch (err) {
return done(err)
}
}
export default new LocalStrategy(verifyPassword)