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:{ module:{
type:String, type:String,
required:true, required:true,
trim:true
}, },
action:{ action:{
type:String, type:String,
required:true required:true,
trim:true
}, },
description:{ description:{

View File

@ -1,23 +1,26 @@
import { Router } from "express"; import { Router } from "express";
import { PermissionController } from "./permission.controller"; import { PermissionController } from "./permission.controller";
import { authMiddleware } from "../auth/auth.middleware"; import { authMiddleware } from "../auth/auth.middleware";
import { permissionMiddleware } from "../auth/permission.middleware";
const permissionRouter = Router(); const permissionRouter = Router();
const controller = new PermissionController(); 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; export default permissionRouter;

View File

@ -27,10 +27,7 @@ export class PermissionService{
.populate( .populate(
"createdBy", "createdBy",
"userName" "userName"
).sort({ );
module:1,
action:1
});
} }
async create( async create(
@ -55,6 +52,15 @@ export class PermissionService{
id:string, id:string,
data:Partial<IPermission> data:Partial<IPermission>
){ ){
const permission = await permissionModel.findById(id);
if(!permission){
return null;
}
if( if(
data.module && data.module &&
data.action data.action
@ -89,7 +95,7 @@ export class PermissionService{
){ ){
return await permissionModel return await permissionModel
.findOne({ .find({
module, module,
active:true active:true
}) })
@ -122,6 +128,22 @@ export class PermissionService{
async delete( async delete(
id:string 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( return await permissionModel.findByIdAndDelete(
id id
); );