Added channel overrides section to admin panel
This commit is contained in:
parent
68f9d5af06
commit
33026a1265
7 changed files with 113 additions and 42 deletions
|
|
@ -24,7 +24,7 @@ const permissionModel = require('../../../schemas/permissionSchema.js');
|
|||
//api permissions functions
|
||||
module.exports.get = async function(req, res){
|
||||
try{
|
||||
const perms = await permissionModel.getPerms();
|
||||
var perms = await permissionModel.getPerms();
|
||||
|
||||
res.status(200);
|
||||
return res.send(perms);
|
||||
|
|
@ -41,21 +41,38 @@ module.exports.post = async function(req, res){
|
|||
//if none
|
||||
if(validResult.isEmpty()){
|
||||
//grab validated/sanatized data
|
||||
const {permissionsMap} = matchedData(req);
|
||||
const {permissionsMap, channelPermissionsMap} = matchedData(req);
|
||||
const perms = await permissionModel.getPerms();
|
||||
var permError = false;
|
||||
|
||||
//For each permission submitted
|
||||
Object.keys(permissionsMap).forEach((perm) => {
|
||||
//Check to make sure no one is jumping perms (this should be admins only, but just in-case)
|
||||
//Setting a boolean inside of an if statement seems fucked, until you realize it won't set it back false on the next loop :P
|
||||
if(permissionModel.rankToNum(perms[perm]) > permissionModel.rankToNum(req.session.user.rank) || permissionModel.rankToNum(permissionsMap[perm]) > permissionModel.rankToNum(req.session.user.rank)){
|
||||
permError = true;
|
||||
}
|
||||
//If we're updating normal perms
|
||||
if(permissionsMap){
|
||||
//For each permission submitted
|
||||
Object.keys(permissionsMap).forEach((perm) => {
|
||||
//Check to make sure no one is jumping perms (this should be admins only, but just in-case)
|
||||
//Setting a boolean inside of an if statement seems fucked, until you realize it won't set it back false on the next loop :P
|
||||
if(permissionModel.rankToNum(perms[perm]) > permissionModel.rankToNum(req.session.user.rank) || permissionModel.rankToNum(permissionsMap[perm]) > permissionModel.rankToNum(req.session.user.rank)){
|
||||
permError = true;
|
||||
}
|
||||
|
||||
//Set permissions in the permissions model
|
||||
perms[perm] = permissionsMap[perm];
|
||||
});
|
||||
//Set permissions in the permissions model
|
||||
perms[perm] = permissionsMap[perm];
|
||||
});
|
||||
}
|
||||
|
||||
if(channelPermissionsMap){
|
||||
//For each permission submitted
|
||||
Object.keys(channelPermissionsMap).forEach((perm) => {
|
||||
//Check to make sure no one is jumping perms (this should be admins only, but just in-case)
|
||||
//Setting a boolean inside of an if statement seems fucked, until you realize it won't set it back false on the next loop :P
|
||||
if(permissionModel.rankToNum(perms.channelOverrides[perm]) > permissionModel.rankToNum(req.session.user.rank) || permissionModel.rankToNum(channelPermissionsMap[perm]) > permissionModel.rankToNum(req.session.user.rank)){
|
||||
permError = true;
|
||||
}
|
||||
|
||||
//Set permissions in the permissions model
|
||||
perms.channelOverrides[perm] = channelPermissionsMap[perm];
|
||||
});
|
||||
}
|
||||
|
||||
//Flip our shit if something's wrong.
|
||||
if(permError){
|
||||
|
|
@ -69,6 +86,7 @@ module.exports.post = async function(req, res){
|
|||
var returnObj = perms.toObject();
|
||||
|
||||
delete returnObj._id
|
||||
delete returnObj.channelOverrides._id
|
||||
delete returnObj.__v
|
||||
|
||||
//send successful response
|
||||
|
|
@ -80,6 +98,7 @@ module.exports.post = async function(req, res){
|
|||
res.send({errors: validResult.array()})
|
||||
}
|
||||
}catch(err){
|
||||
console.log(err);
|
||||
return exceptionHandler(res, err);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue