33 lines
868 B
JavaScript
33 lines
868 B
JavaScript
const passport = require('passport');
|
|
const LocalStrategy = require('passport-local').Strategy;
|
|
const User = require('./models/User');
|
|
|
|
passport.use(new LocalStrategy(
|
|
async (username, password, done) => {
|
|
try {
|
|
const user = await User.findOne({ username: username });
|
|
|
|
if (!user) {
|
|
return done(null, false, { message: 'Incorrect username.' });
|
|
}
|
|
if (!user.validPassword(password)) { // you will need to implement validPassword method in your User model
|
|
return done(null, false, { message: 'Incorrect password.' });
|
|
}
|
|
return done(null, user);
|
|
} catch (err) {
|
|
return done(err);
|
|
}
|
|
}
|
|
));
|
|
|
|
passport.serializeUser((user, done) => {
|
|
done(null, user.id);
|
|
});
|
|
|
|
passport.deserializeUser(async (id, done) => {
|
|
const user = await User.findById(id);
|
|
done(null, user);
|
|
});
|
|
|
|
module.exports = passport;
|