Initial commit

This commit is contained in:
2018-03-02 03:00:51 -05:00
commit 834c66b216
21 changed files with 3365 additions and 0 deletions

153
models/role.js Normal file
View File

@@ -0,0 +1,153 @@
const Mongoose = require('mongoose');
const RoleSchema = new Mongoose.Schema({
name: { type: String, required: true, unique: true },
description: { type: String },
add: { type: Boolean, default: false },
delete: { type: Boolean, default: false },
edit: { type: Boolean, default: false },
manage: { type: Boolean, default: false },
super: { type: Boolean, default: false },
view: { type: Boolean, default: true },
disabled: { type: Boolean, default: false },
order: { type: Number, default: 1 },
updated_at: { type: Date, default: Date.now }
});
RoleSchema.pre('findOneAndUpdate', function (next) {
this.update({}, { $set: { updated_at: Date.now() } });
next();
});
const RoleModel = Mongoose.model('roles', RoleSchema);
module.exports = {
canRole: (e, roleId, action, callback) => {
[initial, canElevate = false] = Array.isArray(action) ? action : [action];
RoleModel.findById(roleId, (err, result) => {
if (err) {
callback('There was an error querying roles', null);
}
if (result) {
let permissions = result[initial] && canElevate ? {
hasPermission: result[initial],
canElevate: canElevate ? result[canElevate] : null
} : result[initial];
callback(null, permissions);
}
});
},
createRole: (e, role) => {
const promise = new Promise((resolve, reject) => {
var roleInstance = new RoleModel(role);
roleInstance.save((err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('createRole', null, result);
})
.catch((err) => {
e.emit('createRole', err, null);
});
},
getRoles: (e, query) => {
query = query || {};
const promise = new Promise((resolve, reject) => {
RoleModel
.find(query.find, query.select, query.options)
.exec((err, results) => {
if (err) {
reject(err);
}
if (results) {
resolve(results);
}
});
});
promise.then((results) => {
e.emit('getRoles', null, results);
})
.catch((err) => {
e.emit('getRoles', err, null);
});
},
getRole: (e, id) => {
const promise = new Promise((resolve, reject) => {
RoleModel.find({_id: id}, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('getRole', null, result);
})
.catch((err) => {
e.emit('getRole', err, null);
});
},
updateRole: (e, id, role) => {
const promise = new Promise((resolve, reject) => {
RoleModel.findByIdAndUpdate(id, { $set: role }, { new: true }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('updateRole', null, result);
})
.catch((err) => {
e.emit('updateRole', err, null);
});
},
deleteRole: (e, id) => {
const promise = new Promise((resolve, reject) => {
RoleModel.remove({ _id: id }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('deleteRole', null, result);
})
.catch((err) => {
e.emit('deleteRole', err, null);
});
}
};