Roles y Permisos (RBAC)
Tres módulos trabajan en conjunto para implementar control de acceso basado en roles:
src/app/modules/module/— define agrupaciones de permisos (secciones del sistema)src/app/modules/role/— define roles asignables a usuariossrc/app/modules/permission/— define permisos individuales, asociados a módulossrc/app/modules/role-permission/— tabla de unión entre roles y permisos
Módulo (System Module)
Representa una sección del sistema (ej: "Contactos", "Mensajería"). Los permisos se agrupan bajo un módulo.
Modelo:
| Campo | Tipo | Descripción |
|---|---|---|
code | string | Identificador único (CONTACTS, MESSAGES, etc.) |
name | string | Nombre legible |
description | string | Descripción |
isActive | boolean | — |
tenantId | ObjectId → Tenant | — |
Role
Agrupación de permisos asignable a un usuario.
Modelo:
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Nombre del rol (Admin, Agent, etc.) |
description | string | — |
isActive | boolean | — |
tenantId | ObjectId → Tenant | — |
Permission
Permiso individual.
Modelo:
| Campo | Tipo | Descripción |
|---|---|---|
code | string | Identificador (CREATE_CONTACT, VIEW_MESSAGES, etc.) |
description | string | — |
module | ObjectId → Module | Módulo al que pertenece |
isActive | boolean | — |
tenantId | ObjectId → Tenant | — |
RolePermission
Tabla de unión.
Modelo:
| Campo | Tipo | Descripción |
|---|---|---|
roleId | ObjectId → Role | — |
permissionId | ObjectId → Permission | — |
Endpoints (los 4 módulos)
Todos siguen el mismo patrón CRUD: GET /, GET /:id, POST /, PATCH /:id, DELETE /:id
| Ruta base | Módulo |
|---|---|
/api/v1/modules | System Modules |
/api/v1/roles | Roles |
/api/v1/permissions | Permissions |
/api/v1/role-permissions | Asignación rol-permiso |
Flujo de asignación
1. Crear módulos del sistema (secciones)
2. Crear permisos asociados a cada módulo
3. Crear roles
4. Asignar permisos a roles via role-permissions
5. Asignar rol a usuario en User.roleId