Permisos
Descripción
Los permisos definen qué acciones pueden realizarse sobre los recursos de la organización. Son una entidad única en todo el sistema: todos los roles comparten el mismo catálogo de permisos. Los roles se relacionan con permisos de forma muchos a muchos (un rol tiene al menos un permiso; varios roles pueden compartir los mismos permisos). Ver 03-roles.md.
Estructura: recurso + acción
Cada permiso combina un recurso (entidad) y una acción sobre ese recurso. A nivel de modelo están separados (ENTITY | ACTION).
Recursos actuales:
| Recurso | Descripción |
|---|---|
| USER | Usuarios de la organización |
| ROLE | Roles de la organización |
| ORGANIZATION | Organizaciones (solo SUPER_ADMIN) |
Otros recursos (p. ej. cursos, equipos) se añadirán según el desarrollo del sistema.
Acciones típicas:
| Acción | Descripción |
|---|---|
| READ | Consultar/listar el recurso |
| WRITE | Crear, actualizar o eliminar (implica implícitamente READ) |
| COMPLETE | Acción explícita específica del recurso (ejemplo) |
Se pueden definir acciones custom muy explícitas para recursos concretos según necesidades de negocio.
Implicación: Si un rol tiene WRITE sobre un recurso, tiene implícitamente READ sobre ese mismo recurso.
Lista cerrada
Los permisos son una lista cerrada: no se crean ni editan en runtime. Se definen durante el desarrollo y se añaden a la base de datos mediante migraciones.
Al añadir un nuevo permiso, se asigna automáticamente al rol administrador de cada organización (salvo la restricción de ORGANIZATION, ver abajo).
Permiso ORGANIZATION (solo SUPER_ADMIN)
El permiso sobre el recurso ORGANIZATION y sus acciones solo puede ser asignado a roles de organizaciones SUPER_ADMIN.
- Los roles (incluido el administrador) de una organización COMMON no pueden tener permisos sobre ORGANIZATION.
- Solo los roles de una organización SUPER_ADMIN pueden tener permisos sobre ORGANIZATION (READ, WRITE, etc.).
Condiciones de negocio (resumen)
- Un rol tiene al menos un permiso (puede tener varios).
- Relación muchos a muchos entre roles y permisos.
- WRITE implica READ sobre el mismo recurso.
- Permisos definidos en migraciones; no se crean ni editan en runtime.
- Nuevos permisos se asignan automáticamente al rol administrador (respetando la regla de ORGANIZATION).
- Solo organizaciones SUPER_ADMIN pueden tener el permiso ORGANIZATION.