39 lines
1.1 KiB
JavaScript
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);
|
|
}
|
|
})); |