var express = require('express'); var router = express.Router(); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var User = require('../models/user'); // Login router.get('/login', ensureNoAuthentication, function(req, res){ res.render('login'); }); router.get('/register', ensureNoAuthentication, function(req, res){ res.render('register'); }); function ensureNoAuthentication(req, res, next) { if(!req.isAuthenticated()) { return next(); } else { //req.flash('error_msg', 'You are not logged in'); res.redirect('/'); } } // Register User router.post('/register', function(req, res){ req.checkBody('email', 'Email is required').notEmpty(); req.checkBody('email', 'Email is not valid').isEmail(); req.checkBody('password', 'Password is required').notEmpty(); req.checkBody('password2', 'Passwords do not match').equals(req.body.password); var errors = req.validationErrors(); if(errors){ res.render('register', {errors: errors}); } else { var newUser = new User({ email: req.body.email, password: req.body.password, }); User.createUser(newUser, function(err, user){ if(err) throw err; console.log(user); }); req.flash('success_msg', 'You are registered and can now login'); res.redirect('/users/login'); } }); passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' }, function(email, password, done) { User.getUserByEmail(email, function(err, user) { if (err) throw err; if (!user) { return done(null, false, { message: 'Unknown User' }); } User.comparePassword(password, user.password, function(err, isMatch){ if(err) throw err; if(isMatch){ return done(null, user); } else { return done(null, false, { message: 'Invalid password' }); } }); }); } )); passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.getUserById(id, function(err, user) { done(err, user); }); }); router.post('/login', passport.authenticate('local', {successRedirect: '/', failureRedirect: '/users/login', failureFlash: true}), function(req, res) { }); router.get('/logout', function(req, res) { req.logOut(); req.flash('success_msg', 'You are logged out'); res.redirect('/users/login'); }); module.exports = router;