express-members-only/passportInit.js
2023-09-12 20:33:23 -07:00

35 lines
913 B
JavaScript

const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
const bcrypt = require("bcryptjs");
const User = require("./models/user.js");
const passportInit = () => {
passport.use(
"local",
new LocalStrategy(async function verify(username, password, done) {
const user = await User.findOne({ username: username });
if (!user) {
return done(null, false, { message: "Incorrect username" });
}
const match = await bcrypt.compare(password, user.password);
if (!match) {
return done(null, false, { message: "Incorrect password" });
}
return done(null, user);
})
);
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser(async (user, done) => {
try {
done(null, user);
} catch (err) {
done(err);
}
});
};
module.exports = passportInit;