Added more granular permissions.

This commit is contained in:
rainbow napkin 2024-12-02 20:33:18 -05:00
parent ef4894e409
commit 2dbf3b97d5
11 changed files with 179 additions and 75 deletions

View file

@ -15,7 +15,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//npm imports
const { body } = require('express-validator');
const { body, checkExact } = require('express-validator');
const { Router } = require('express');
//local imports
@ -37,31 +37,31 @@ const router = Router();
//user authentication middleware
router.use("/register",permissionSchema.reqPermCheck("registerChannel"));
router.use("/settings", channelValidator.name('chanName'), channelModel.reqPermCheck("manageChannel"));
router.use("/permissions", channelValidator.name('chanName'), channelModel.reqPermCheck("manageChannel"));
router.use("/rank", channelValidator.name('chanName'), channelModel.reqPermCheck("manageChannel"));
router.use("/delete", channelValidator.name('chanName'), channelModel.reqPermCheck("deleteChannel"));
router.use("/ban", channelValidator.name('chanName'), channelModel.reqPermCheck("manageChannel"));
router.use("/settings", channelValidator.name('chanName'));
router.use("/permissions", channelValidator.name('chanName'));
router.use("/rank", channelValidator.name('chanName'));
router.use("/delete", channelValidator.name('chanName'));
router.use("/ban", channelValidator.name('chanName'));
//routing functions
//register
router.post('/register', channelValidator.name(), channelValidator.description(), channelValidator.thumbnail(), registerController.post);
//list
router.get('/list', listController.get);
router.get('/list', channelModel.reqPermCheck("manageChannel"), listController.get);
//settings
router.get('/settings', settingsController.get);
router.post('/settings', channelValidator.settingsMap(), settingsController.post);
router.get('/settings', channelModel.reqPermCheck("manageChannel"), settingsController.get);
router.post('/settings', channelModel.reqPermCheck("changeSettings"), channelValidator.settingsMap(), settingsController.post);
//permissions
router.get('/permissions', permissionsController.get);
router.post('/permissions', channelPermissionValidator.channelPermissionsMap(), permissionsController.post);
router.get('/permissions', channelModel.reqPermCheck("manageChannel"), permissionsController.get);
router.post('/permissions', channelModel.reqPermCheck("changePerms"), checkExact(channelPermissionValidator.channelPermissionsMap()), permissionsController.post);
//rank
router.get('/rank', rankController.get);
router.post('/rank', accountValidator.user(), channelValidator.rank(), rankController.post);
router.get('/rank', channelModel.reqPermCheck("manageChannel"), rankController.get);
router.post('/rank', channelModel.reqPermCheck("changeRank"), accountValidator.user(), channelValidator.rank(), rankController.post);
//delete
router.post('/delete', channelValidator.name('confirm'), deleteController.post);
router.post('/delete', channelModel.reqPermCheck("deleteChannel"), channelValidator.name('confirm'), deleteController.post);
//ban
router.get('/ban', banController.get);
router.post('/ban', accountValidator.user(), body("banAlts").isBoolean(), body("expirationDays").isInt(), banController.post);
router.delete('/ban', accountValidator.user(), banController.delete);
router.get('/ban', channelModel.reqPermCheck("manageChannel"), banController.get);
router.post('/ban', channelModel.reqPermCheck("banUser"), accountValidator.user(), body("banAlts").isBoolean(), body("expirationDays").isInt(), banController.post);
router.delete('/ban', channelModel.reqPermCheck("banUser"), accountValidator.user(), banController.delete);
module.exports = router;