/*Canopy - The next generation of stoner streaming software Copyright (C) 2024 Rainbownapkin and the TTN Community This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .*/ //NPM Imports const { check, body, checkSchema, checkExact} = require('express-validator'); //local imports const permissionSchema = require("../schemas/permissionSchema"); module.exports.isRank = function(value){ rankVal = permissionSchema.rankToNum(value); return rankVal != -1; } module.exports.permissionsValidator = { permissionsMap: () => checkSchema({ 'permissionsMap.adminPanel': { optional: true, custom: { options: module.exports.isRank }, }, 'permissionsMap.changeRank': { optional: true, custom: { options: module.exports.isRank }, }, 'permissionsMap.changePerms': { optional: true, custom: { options: module.exports.isRank }, }, 'permissionsMap.banUser': { optional: true, custom: { options: module.exports.isRank }, }, 'permissionsMap.nukeUser': { optional: true, custom: { options: module.exports.isRank }, }, 'permissionsMap.genPasswordReset': { optional: true, custom: { options: module.exports.isRank }, }, 'permissionsMap.registerChannel': { optional: true, custom: { options: module.exports.isRank }, } }) } module.exports.channelPermissionValidator = { channelPermissionsMap: () => checkSchema({ 'channelPermissionsMap.manageChannel': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.changeRank': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.changePerms': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.changeSettings': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.kickUser': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.banUser': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.announce': { optional: true, custom: { options: module.exports.isRank }, }, 'channelPermissionsMap.deleteChannel': { optional: true, custom: { options: module.exports.isRank }, } }) }