Mpoknimu/config/passport.js

39 lines
1.1 KiB
JavaScript

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/user');
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser(async (id, done) => {
try{
const user = await User.findById(id);
done(null, user.id);
}catch(error){
done(error, null);
}
});
passport.use('local', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: false
}, async (email, password, done)=>{
try{
// 1) Check if the email already exists
const user = await User.findOne({ 'email': email});
if (!user){
return done(null,false,{ message: 'Unknown User' })
}
// 2) Check if the password is correct
const isValit = User.comparePasswords(password,user.password);
if(isValit){
return done(null, user);
}else{
return done(null, false,{ message: 'Unknown Password'});
}
}catch(error){
return done(error, false);
}
}));