Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var roleSchema = new mongoose.Schema({
- roleId: {
- type: mongoose.Schema.Types.ObjectId,
- ref: 'Roles'
- }
- });
- const userSchema = new mongoose.Schema({
- Username: {
- type: String,
- required: true,
- minlength: 5,
- maxlength: 255,
- unique: true
- },
- FirstName: {
- type: String
- },
- LastName: {
- type: String
- },
- Email: {
- type: String,
- required: true,
- minlength: 5,
- maxlength: 255
- },
- Password: {
- type: String,
- required: true,
- minlength: 5,
- maxlength: 1024
- },
- Roles: [roleSchema],
- Active: {type: Boolean, default: true},
- SuperUser: {type: Boolean, default: false}
- },{
- timestamps: true
- });
- const rolesSchema = new mongoose.Schema({
- RoleName: {
- type: String,
- required: true,
- minlength: 5,
- maxlength: 255,
- unique: true
- },
- Description: {
- type: String
- },
- Active: {type: Boolean, default: true}
- }, {
- timestamps: true
- });
- router.post('/', [auth, admin], async (req, res) => {
- const { error } = validate(req.body);
- if (error) return res.status(400).send(error.details[0].message);
- let user = await User.findOne({ Username: req.body.Username });
- if (user) return res.status(400).send('User with username: ', req.body.Username, 'already exists. Please try with any other username');
- // Begin: Code added to populate Roles in Users document. Look up the roles information in req.body payload
- let rolesArray = {};
- if(req.body.Roles !== null) {
- req.body.Roles.forEach(element => {
- objectId = mongoose.Types.ObjectId(element);
- const roleInfo = Roles.findById(objectId);
- if (!roleInfo) return res.status(400).send('Invalid Role in Input.');
- });
- }
- console.log('Roles : ', rolesArray);
- user = new User(_.pick(req.body, ['Username', 'FirstName', 'LastName' ,'Email', 'Password', 'Active','SuperUser', 'Roles']));
- rolesArray.forEach(role => {
- console.log('Role in user : ', role);
- user.Roles.push = role;
- });
- // End: Code added to populate Roles in Users document. Look up the roles information in req.body payload
- const salt = await bcrypt.genSalt(10);
- user.Password = await bcrypt.hash(user.Password, salt);
- await user.save();
- const token = user.generateAuthToken();
- res.header('x-auth-token', token).send(_.pick(user, ['_id', 'FirstName', 'LastName' ,'Email', 'Roles']));
- });
Add Comment
Please, Sign In to add comment