123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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;
|