Actualización módulo permisos

This commit is contained in:
2026-07-10 15:30:33 +00:00
parent 9099a781a1
commit f2d4b25b5f
4 changed files with 41 additions and 16 deletions

View File

@ -160,6 +160,4 @@ export class PermissionController{
});
}
}
}

View File

@ -13,11 +13,13 @@ const permissionSchema = new mongoose.Schema({
module:{
type:String,
required:true,
trim:true
},
action:{
type:String,
required:true
required:true,
trim:true
},
description:{

View File

@ -1,23 +1,26 @@
import { Router } from "express";
import { PermissionController } from "./permission.controller";
import { authMiddleware } from "../auth/auth.middleware";
import { permissionMiddleware } from "../auth/permission.middleware";
const permissionRouter = Router();
const controller = new PermissionController();
permissionRouter.get("/", authMiddleware, controller.getAll);
permissionRouter.get("/", authMiddleware, permissionMiddleware("permissions", "read"), controller.getAll);
permissionRouter.get("/module/:module", authMiddleware, controller.getByModule);
permissionRouter.get("/module/:module", authMiddleware, permissionMiddleware("permissions", "read"), controller.getByModule);
permissionRouter.get("/module/:module/action/:action", authMiddleware, controller.getByModule);
permissionRouter.get("/module/:module/action/:action", authMiddleware, permissionMiddleware("permissions", "read"), controller.getByModuleandAction);
permissionRouter.get("/:id", authMiddleware, controller.getById);
permissionRouter.get("/:id", authMiddleware, permissionMiddleware("permissions", "read"), controller.getById);
permissionRouter.post("/", authMiddleware, controller.create);
permissionRouter.post("/", authMiddleware, /*permissionMiddleware("permissions", "create"),*/ controller.create);
permissionRouter.put("/:id", authMiddleware, controller.update);
permissionRouter.put("/:id", authMiddleware, permissionMiddleware("permissions", "update"), controller.update);
permissionRouter.delete("/:id", authMiddleware, controller.delete);
permissionRouter.delete("/:id", authMiddleware, permissionMiddleware("permissions", "delete"), controller.delete);
export default permissionRouter;

View File

@ -27,10 +27,7 @@ export class PermissionService{
.populate(
"createdBy",
"userName"
).sort({
module:1,
action:1
});
);
}
async create(
@ -55,6 +52,15 @@ export class PermissionService{
id:string,
data:Partial<IPermission>
){
const permission = await permissionModel.findById(id);
if(!permission){
return null;
}
if(
data.module &&
data.action
@ -89,7 +95,7 @@ export class PermissionService{
){
return await permissionModel
.findOne({
.find({
module,
active:true
})
@ -122,6 +128,22 @@ export class PermissionService{
async delete(
id:string
){
const role = await permissionModel.findById(id);
if (!role) {
return null;
}
// Verificar si el rol está asignado a usuarios
const usersWithRole = await permissionModel.countDocuments({
roleId: id
});
if (usersWithRole > 0) {
throw new Error(
"No se puede eliminar el permiso porque está asignado a uno o más roles."
);
}
return await permissionModel.findByIdAndDelete(
id
);