Skip to content

Instantly share code, notes, and snippets.

@TheRobOne
Created December 22, 2017 17:29
Show Gist options
  • Save TheRobOne/4a381b873ed666b2b8b146cb8d6613b5 to your computer and use it in GitHub Desktop.
Save TheRobOne/4a381b873ed666b2b8b146cb8d6613b5 to your computer and use it in GitHub Desktop.
const express = require('express');
const router = express.Router();
const passport = require('passport');
router.post(‘/login’, (req, res, next) => {
passport.authenticate(‘local’, {
successRedirect: ‘/’,
failureRedirect: ‘/users/login’,
failureFlash: true
})(req, res, next);
}
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/user');
const dbConfig = require('../config/database');
const bcrypt = require('bcrypt');
const passport = require('passport');
module.exports = (passport) => {
//using local Strategy
passport.use(new LocalStrategy((login, password, done) => {
//match email or password
let query = {$or: [
{email: login},
{userName: login}
]}
User.findOne(query, (err, user) => {
if(err){
console.log(err);
}
if(!user){
return done(null, false, {message: 'No user found'});
}
if(user.activated === false){
console.log("user not activated");
return done(null, false, {message: 'User not activated'});
}
bcrypt.compare(password, user.password, (err, isMatch) => {
if(err){
console.log(err);
}
if(isMatch){
return done(null, user);
} else{
return done(null, false, {message: 'Wrong password'});
}
});
});
}));
passport.serializeUser(function(user, done) {
done(null, user.id, user.role);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment