user.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. var _ = require('lodash');
  2. var async = require('async');
  3. var crypto = require('crypto');
  4. var nodemailer = require('nodemailer');
  5. var passport = require('passport');
  6. var User = require('../models/user');
  7. var secure = require('../config/secure');
  8. /********** GET / Login **************/
  9. exports.getLogin = function (req, res) {
  10. if (req.user) {
  11. return res.redirect('/');
  12. }
  13. res.render('account/login', {
  14. title: 'Login'
  15. });
  16. };
  17. /********** POST / Login **************/
  18. exports.postLogin = function(req, res, next) {
  19. req.assert('email', 'Email is not valid').isEmail();
  20. req.assert('password', 'Password cannot be blank').notEmpty();
  21. var errors = req.validationErrors();
  22. if (errors) {
  23. req.flash('errors', errors);
  24. return res.redirect('/login');
  25. }
  26. passport.authenticate('local', function(err, user, info) {
  27. if (err) {
  28. return next(err);
  29. }
  30. if (!user) {
  31. req.flash('errors', { msg: info.message });
  32. return res.redirect('/login');
  33. }
  34. req.logIn(user, function(err) {
  35. if (err) {
  36. return next(err);
  37. }
  38. req.flash('success', { msg: 'Success! You are logged in.' });
  39. res.redirect(req.session.returnTo || '/');
  40. });
  41. })(req, res, next);
  42. };
  43. /********** GET / Logout **************/
  44. exports.logout = function(req, res) {
  45. req.logout();
  46. res.redirect('/');
  47. };
  48. /********** GET / Register **************/
  49. exports.getSignup = function(req, res) {
  50. if (req.user) {
  51. return res.redirect('/');
  52. }
  53. res.render('account/register', {
  54. title: 'Register'
  55. });
  56. };
  57. /********** POST / Register **************/
  58. exports.postSignup = function(req, res, next) {
  59. req.assert('email', 'Email is not valid').isEmail();
  60. req.assert('password', 'Password must be at least 4 characters long').len(4);
  61. req.assert('confirmPassword', 'Passwords do not match').equals(req.body.password);
  62. var errors = req.validationErrors();
  63. if (errors) {
  64. req.flash('errors', errors);
  65. return res.redirect('/register');
  66. }
  67. var user = new User({
  68. email: req.body.email,
  69. password: req.body.password
  70. });
  71. User.findOne({ email: req.body.email }, function(err, existingUser) {
  72. if (existingUser) {
  73. req.flash('errors', { msg: 'Account with that email address already exists.' });
  74. return res.redirect('/register');
  75. }
  76. user.save(function(err) {
  77. if (err) {
  78. return next(err);
  79. }
  80. req.logIn(user, function(err) {
  81. if (err) {
  82. return next(err);
  83. }
  84. res.redirect('/');
  85. });
  86. });
  87. });
  88. };