Added channel overrides section to admin panel

This commit is contained in:
rainbownapkin 2024-11-23 17:45:19 -05:00
parent 68f9d5af06
commit 33026a1265
7 changed files with 113 additions and 42 deletions

View file

@ -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);
}
}