Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. var express = require('express');
  2. var router = express.Router();
  3. var User = require('../models/user');
  4. var mid = require('../middleware');
  5.  
  6. // Render templates
  7. router.get('/', function(req, res, next) {
  8. return res.render('index', { title: 'Home' });
  9. });
  10.  
  11. router.get('/about', function(req, res, next) {
  12. return res.render('about', { title: 'About' });
  13. });
  14.  
  15. router.get('/contact', function(req, res, next) {
  16. return res.render('contact', { title: 'Contact' });
  17. });
  18.  
  19. // register routes
  20. // GET /register
  21. router.get('/register', mid.loggedOut, function(req, res, next) {
  22. return res.render('register', { title: 'Sign Up' });
  23. });
  24.  
  25. // POST /register
  26. router.post('/register', function(req, res, next) {
  27. if (req.body.email &&
  28. req.body.name &&
  29. req.body.favoriteBook &&
  30. req.body.password &&
  31. req.body.confirmPassword) {
  32.  
  33. if (req.body.password !== req.body.confirmPassword) {
  34. var err = new Error('Passwords do not match.');
  35. err.status = 400;
  36. return next(err);
  37. }
  38. // retrieve data from form
  39. // assign to object to insert in Mongo
  40. var userData = {
  41. email: req.body.email,
  42. name: req.body.name,
  43. favoriteBook: req.body.favoriteBook,
  44. password: req.body.password
  45. };
  46.  
  47. // create new user record
  48. User.create(userData, function (error, user) {
  49. if (error) {
  50. return next(error);
  51. } else {
  52. req.session.userId = user._id;
  53. return res.redirect('/profile');
  54. }
  55. });
  56.  
  57. } else {
  58. var err = new Error('All fields required.');
  59. err.status = 400;
  60. return next(err);
  61. }
  62. });
  63.  
  64. // login routes
  65. // GET /login
  66. router.get('/login', mid.loggedOut, function(req, res, next) {
  67. return res.render('login', { title: 'Log in'})
  68. });
  69.  
  70. // GET /logout
  71. router.get('/logout', function(req, res, next) {
  72. if (req.session) {
  73. // delete session object
  74. req.session.destroy(function(err) {
  75. if(err) {
  76. return next(err);
  77. } else {
  78. return res.redirect('/');
  79. }
  80. });
  81. }
  82. });
  83.  
  84. // POST /login
  85. router.post('/login', function(req, res, next) {
  86. if (req.body.email && req.body.password) {
  87. User.authenticate(req.body.email, req.body.password, function (error, user) {
  88. if (error || !user) {
  89. var err = new Error('Wrong email or password.');
  90. err.status = 401;
  91. return next(err);
  92. } else {
  93. req.session.userId = user._id;
  94. return res.redirect('/profile');
  95. }
  96. });
  97. } else {
  98. var err = new Error('Email and password are required.');
  99. err.status = 401;
  100. return next(err);
  101. }
  102. });
  103.  
  104. // GET /profile
  105. router.get('/profile', mid.requiresLogin, function(req, res, next) {
  106. User.findById(req.session.userId)
  107. .exec(function (error, user) {
  108. if (error) {
  109. return next(error);
  110. } else {
  111. return res.render('profile', { title: 'Profile', name: user.name, favorite: user.favoriteBook });
  112. }
  113. });
  114. });
  115.  
  116. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement