35 lines
927 B
JavaScript
35 lines
927 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 }).lean().exec();
|
|
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;
|