const passport = require('passport') const LocalStrategy = require("passport-local").Strategy; passport.use(new LocalStrategy({ usernameField: 'email' }, async (email, password, done)=>{ try{ const user = await User.findOne({ email }) if (!user) return done(null, false, { message: 'User not exists' }) if (!await user.checkPassword(password)) return done(null, false, { message: 'Incorrect Password' }) return done(null, user) } catch (e) { return done(e) } } )) passport.serializeUser((user, done)=>{ return done(null, user._id) }) passport.deserializeUser(async (_id, done) => { try { const user = await User.findOne({ _id }) return done(null, user) } catch (e) { return done(e) } }) //place this one on the route router.post('/login', (req, res, next) => { console.log(req.body.email) passport.authenticate('local', (err, user, info) => { if (err) { req.session.flashData = { message: { type: 'error', body: 'Login failed' } } return res.redirect('/user/login') } // Let check for user if (!user) { req.session.flashData = { message: { type: 'error', body: info.message } } return res.redirect('/user/login') } req.logIn(user, (err) => { if (err) { req.session.flashData = { message: { type: 'error', body: 'Login failed' } } } return res.redirect('/task/viewtask') }) })(req, res, next) }) //place this on index.js // For Passport to work with session app.use(passport.initialize()); app.use(passport.session());
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter