Actualización módulo permisos
This commit is contained in:
@ -160,6 +160,4 @@ export class PermissionController{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -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:{
|
||||||
|
|||||||
@ -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;
|
||||||
@ -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
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user