Advertisement
StoyanGrigorov

admin/user

Nov 17th, 2016
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Created by grigo on 17.11.2016 г..
  3.  */
  4. const User = require('mongoose').model('User');
  5. const Role = require('mongoose').model('Role');
  6. const encryption = require('./../../utilities/encryption');
  7.  
  8. module.exports = {
  9.     all: (req, res) => {
  10.         User.find({}).then(users => {
  11.  
  12.             for (let user of users) {
  13.                 user.isInRole('Admin').then(isAdmin => {
  14.                     user.isAdmin = isAdmin;
  15.                 });
  16.             }
  17.  
  18.             res.render('admin/user/all', {users: users})
  19.         });
  20.     },
  21.  
  22.     editGet: (req, res) =>{
  23.         let id = req.params.id;
  24.  
  25.         User.findById(id).then(user =>{
  26.             Role.find({}).then(roles =>{
  27.                 for ( let role of roles) {
  28.                     if (user.roles.indexOf(role.id) !== -1){
  29.                         role.isChecked = true;
  30.                     }
  31.                 }
  32.  
  33.                 res.render('admin/user/edit', {user: user, roles: roles})
  34.             })
  35.         });
  36.     },
  37.  
  38.     editPost: (req, res) => {
  39.         let id = req.params.id;
  40.         let userArgs = req.body;
  41.  
  42.         User.findOne({email: userArgs.email, _id: {$ne: id}}).then(user => {
  43.             let errorMsg = '';
  44.             if (user) {
  45.                 errorMsg = 'User with the same username exists!';
  46.             }
  47.             else if (!userArgs.email) {
  48.                 errorMsg = 'Email cannot be null!'
  49.             }
  50.             else  if (!userArgs.fullName) {
  51.                 errorMsg = 'Name cannot be null!'
  52.             }
  53.             else if (userArgs.password !== userArgs.confirmedPassword) {
  54.                 errorMsg = 'Passwords do not match'
  55.             }
  56.  
  57.             if (errorMsg) {
  58.                 userArgs.error = errorMsg;
  59.                 res.render('admin/user/edit', userArgs);
  60.             }
  61.             else {
  62.                 Role.find({}).then(roles => {
  63.                     let newRoles = roles.filter(role => {
  64.                         return userArgs.roles.indexOf(role.name) !== -1;
  65.                     }).map(role => {
  66.                         return role.id;
  67.                     });
  68.  
  69.                     User.findOne({_id : id}).then(user => {
  70.                         user.email = userArgs.email;
  71.                         user.fullName = userArgs.fullName;
  72.  
  73.                         let passwordHash = user.passwordHash;
  74.                         if (userArgs.password) {
  75.                             passwordHash = encryption.hashPassword(userArgs.password, user.salt);
  76.                         }
  77.  
  78.                         user.passwordHash = passwordHash;
  79.                         user.roles = newRoles;
  80.  
  81.                         user.save((err) => {
  82.                             if (err) {
  83.                                 res.redirect('/');
  84.                             }
  85.                             else {
  86.                                 res.redirect('/admin/user/all');
  87.                             }
  88.                         })
  89.                     })
  90.                 })
  91.             }
  92.         });
  93.     }
  94. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement