Guest User

Untitled

a guest
Aug 24th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. var roleSchema = new mongoose.Schema({
  2. roleId: {
  3. type: mongoose.Schema.Types.ObjectId,
  4. ref: 'Roles'
  5. }
  6. });
  7.  
  8. const userSchema = new mongoose.Schema({
  9.  
  10. Username: {
  11. type: String,
  12. required: true,
  13. minlength: 5,
  14. maxlength: 255,
  15. unique: true
  16. },
  17. FirstName: {
  18. type: String
  19. },
  20. LastName: {
  21. type: String
  22. },
  23. Email: {
  24. type: String,
  25. required: true,
  26. minlength: 5,
  27. maxlength: 255
  28. },
  29. Password: {
  30. type: String,
  31. required: true,
  32. minlength: 5,
  33. maxlength: 1024
  34. },
  35. Roles: [roleSchema],
  36. Active: {type: Boolean, default: true},
  37. SuperUser: {type: Boolean, default: false}
  38. },{
  39. timestamps: true
  40. });
  41.  
  42. const rolesSchema = new mongoose.Schema({
  43. RoleName: {
  44. type: String,
  45. required: true,
  46. minlength: 5,
  47. maxlength: 255,
  48. unique: true
  49. },
  50. Description: {
  51. type: String
  52. },
  53. Active: {type: Boolean, default: true}
  54. }, {
  55. timestamps: true
  56. });
  57.  
  58. router.post('/', [auth, admin], async (req, res) => {
  59.  
  60. const { error } = validate(req.body);
  61. if (error) return res.status(400).send(error.details[0].message);
  62.  
  63. let user = await User.findOne({ Username: req.body.Username });
  64. if (user) return res.status(400).send('User with username: ', req.body.Username, 'already exists. Please try with any other username');
  65.  
  66. // Begin: Code added to populate Roles in Users document. Look up the roles information in req.body payload
  67.  
  68. let rolesArray = {};
  69.  
  70. if(req.body.Roles !== null) {
  71.  
  72. req.body.Roles.forEach(element => {
  73. objectId = mongoose.Types.ObjectId(element);
  74. const roleInfo = Roles.findById(objectId);
  75. if (!roleInfo) return res.status(400).send('Invalid Role in Input.');
  76. });
  77. }
  78.  
  79. console.log('Roles : ', rolesArray);
  80.  
  81. user = new User(_.pick(req.body, ['Username', 'FirstName', 'LastName' ,'Email', 'Password', 'Active','SuperUser', 'Roles']));
  82.  
  83. rolesArray.forEach(role => {
  84. console.log('Role in user : ', role);
  85. user.Roles.push = role;
  86. });
  87.  
  88. // End: Code added to populate Roles in Users document. Look up the roles information in req.body payload
  89.  
  90. const salt = await bcrypt.genSalt(10);
  91. user.Password = await bcrypt.hash(user.Password, salt);
  92. await user.save();
  93.  
  94. const token = user.generateAuthToken();
  95. res.header('x-auth-token', token).send(_.pick(user, ['_id', 'FirstName', 'LastName' ,'Email', 'Roles']));
  96.  
  97. });
Add Comment
Please, Sign In to add comment