/** * Copyright (c) 2026 Niolla * All rights reserved. * * This source code is proprietary and confidential. * Unauthorized copying, modification, distribution, or use * of this file, via any medium, is strictly prohibited. */ // app/routes/permission.routes.js const express = require("express"); const router = express.Router(); const permissionController = require("../controllers/permission.controller"); const { authenticate } = require("../middleware/auth.middleware"); const { authorizedAccountType } = require("../middleware/permission.middleware"); const roleAssignmentController = require("../controllers/roleAssignment.controller"); router.use(authenticate, authorizedAccountType(["superadmin"])); router.post("/users/:userId/roles/:roleId", roleAssignmentController.assignRole); router.delete("/users/:userId/roles/:roleId", roleAssignmentController.removeRole); router.get("/roles", permissionController.getAllRoles); router.get("/roles/:roleId", permissionController.getRoleById); // Permission routes router.post( "/", authenticate, authorizedAccountType(["admin"]), permissionController.createPermission ); router.post( "/bulk", authenticate, authorizedAccountType(["admin"]), permissionController.bulkCreatePermissions ); router.get( "/", authenticate, permissionController.getAllPermissions ); router.get( "/:permissionId", authenticate, permissionController.getPermissionById ); router.put( "/:permissionId", authenticate, authorizedAccountType(["admin"]), permissionController.updatePermission ); router.delete( "/:permissionId", authenticate, authorizedAccountType(["admin"]), permissionController.deletePermission ); // Role routes router.post( "/roles", authenticate, authorizedAccountType(["admin"]), permissionController.createRole ); router.get( "/roles", authenticate, permissionController.getAllRoles ); router.get( "/roles/:roleId", authenticate, permissionController.getRoleById ); router.put( "/roles/:roleId", authenticate, authorizedAccountType(["admin"]), permissionController.updateRole ); router.delete( "/roles/:roleId", authenticate, authorizedAccountType(["admin"]), permissionController.deleteRole ); // Role-Permission assignment route router.post( "/roles/:roleId/permissions", authenticate, authorizedAccountType(["admin"]), permissionController.createRolePermission ); // Bulk Role-Permission assignment router.post( "/roles/permissions/bulk", authenticate, authorizedAccountType(["admin"]), permissionController.bulkCreateRolePermissions ); // User permissions route router.get( "/users/:userId/permissions", authenticate, permissionController.getUserPermissions ); router.post( "/users/permissions", authenticate, authorizedAccountType(["admin"]), permissionController.createUserPermission ); // Bulk User Permissions router.post( "/users/permissions/bulk", authenticate, authorizedAccountType(["admin"]), permissionController.bulkCreateUserPermissions ); router.put( "/users/permissions/:upId", authenticate, authorizedAccountType(["admin"]), permissionController.updateUserPermission ); router.delete( "/users/permissions/:upId", authenticate, authorizedAccountType(["admin"]), permissionController.deleteUserPermission ); module.exports = router;