Advertisement
YavorJS

user.js controller

Nov 19th, 2016
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. const User = require('mongoose').model('User');
  2. const Role = require('mongoose').model('Role');
  3. const encryption = require('./../utilities/encryption');
  4.  
  5. module.exports = {
  6. registerGet: (req, res) => {
  7. res.render('user/register');
  8. },
  9.  
  10. registerPost: (req, res) => {
  11. let registerArgs = req.body;
  12.  
  13. User.findOne({email: registerArgs.email}).then(user => {
  14. let errorMsg = '';
  15. if (user) {
  16. errorMsg = 'User with the same username exists!';
  17. } else if (registerArgs.password !== registerArgs.repeatedPassword) {
  18. errorMsg = 'Passwords do not match!'
  19. }
  20.  
  21. if (errorMsg) {
  22. registerArgs.error = errorMsg;
  23. res.render('user/register', registerArgs)
  24. } else {
  25. let salt = encryption.generateSalt();
  26. let passwordHash = encryption.hashPassword(registerArgs.password, salt);
  27.  
  28. let userObject = {
  29. email: registerArgs.email,
  30. passwordHash: passwordHash,
  31. fullName: registerArgs.fullName,
  32. salt: salt
  33. };
  34.  
  35. let roles = [];
  36. Role.findOne({name: 'User'}).then(role => {
  37. roles.push(role.id);
  38.  
  39. userObject.roles = roles;
  40. User.create(userObject).then(user => {
  41. user.prepareInsert();
  42. req.logIn(user, (err) => {
  43. if (err) {
  44. registerArgs.error = err.message;
  45. res.render('user/register', registerArgs);
  46. return;
  47. }
  48.  
  49. res.redirect('/');
  50. })
  51.  
  52. });
  53. });
  54. }
  55. })
  56. },
  57.  
  58. loginGet: (req, res) => {
  59. res.render('user/login');
  60. },
  61.  
  62. loginPost: (req, res) => {
  63. let loginArgs = req.body;
  64. User.findOne({email: loginArgs.email}).then(user => {
  65. if (!user || !user.authenticate(loginArgs.password)) {
  66. let errorMsg = 'Either username or password is invalid!';
  67. loginArgs.error = errorMsg;
  68. res.render('user/login', loginArgs);
  69. return;
  70. }
  71.  
  72. req.logIn(user, (err) => {
  73. if (err) {
  74. res.render('/user/login', {error: err.message});
  75. return;
  76. }
  77.  
  78. let returnUrl = '/';
  79. if (req.session.returnUrl) {
  80. returnUrl = req.session.returnUrl;
  81. delete req.session.returnUrl;
  82. }
  83.  
  84. res.redirect(returnUrl);
  85. })
  86. })
  87. },
  88.  
  89. logout: (req, res) => {
  90. req.logOut();
  91. res.redirect('/');
  92. }
  93. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement