var _ = require('lodash'); var async = require('async'); var crypto = require('crypto'); var nodemailer = require('nodemailer'); var passport = require('passport'); var User = require('../models/user'); var secure = require('../config/secure'); /********** GET / Login **************/ exports.getLogin = function (req, res) { if (req.user) { return res.redirect('/'); } res.render('account/login', { title: 'Login' }); }; /********** POST / Login **************/ exports.postLogin = function(req, res, next) { req.assert('email', 'Email is not valid').isEmail(); req.assert('password', 'Password cannot be blank').notEmpty(); var errors = req.validationErrors(); if (errors) { req.flash('errors', errors); return res.redirect('/login'); } passport.authenticate('local', function(err, user, info) { if (err) { return next(err); } if (!user) { req.flash('errors', { msg: info.message }); return res.redirect('/login'); } req.logIn(user, function(err) { if (err) { return next(err); } req.flash('success', { msg: 'Success! You are logged in.' }); res.redirect(req.session.returnTo || '/'); }); })(req, res, next); }; /********** GET / Logout **************/ exports.logout = function(req, res) { req.logout(); res.redirect('/'); }; /********** GET / Register **************/ exports.getSignup = function(req, res) { if (req.user) { return res.redirect('/'); } res.render('account/register', { title: 'Register' }); }; /********** POST / Register **************/ exports.postSignup = function(req, res, next) { req.assert('email', 'Email is not valid').isEmail(); req.assert('password', 'Password must be at least 4 characters long').len(4); req.assert('confirmPassword', 'Passwords do not match').equals(req.body.password); var errors = req.validationErrors(); if (errors) { req.flash('errors', errors); return res.redirect('/register'); } var user = new User({ email: req.body.email, password: req.body.password }); User.findOne({ email: req.body.email }, function(err, existingUser) { if (existingUser) { req.flash('errors', { msg: 'Account with that email address already exists.' }); return res.redirect('/register'); } user.save(function(err) { if (err) { return next(err); } req.logIn(user, function(err) { if (err) { return next(err); } res.redirect('/'); }); }); }); };