Con roles.manage (Super admin) se crean roles nuevos, por ejemplo “soporte_n2”, y se editan los existentes: nombre, nivel, permisos y política de MFA. Las reglas consultan permisos, nunca nombres de rol, así que un rol nuevo funciona en todo Trazo sin tocar código.
- El rol Super admin no se edita ni se elimina: siempre tiene todos los permisos.
- Los 5 roles base (
is_system) se pueden editar pero no eliminar. - Un rol con personas no se elimina: primero se les cambia el rol.
Paso a paso
- Super adminCrea o edita un rol
En
/administracion/roles. Al crear se puede partir de "Copiar permisos de" otro rol. Antes de guardar, la confirmación dice cuántas personas se verán afectadas. - NavegadorEnvía POST /roles o PATCH /roles/{code}
- API¿Rol por debajo de su nivel y no bloqueado?
El nivel nuevo como máximo el propio − 1 (99 para la cima) y único. El código, en minúsculas, números y guion bajo, empezando por letra.
- API¿Solo permisos que él tiene?
- API¿Cambia el nivel, algo sensible o relaja el MFA?
Si sí, pide el código de su aplicación (reautenticación), igual que al cambiar el rol de una persona.
- Super adminConfirma con su código
- Base de datosGuarda el rol y poda excepciones sobrantes
Si cambiaron los permisos, se quitan las excepciones de sus miembros que el rol ya cubre o que ya no tienen sentido. Registro
role_createdorole_updatedenadmin_actionscon lo que cambió. - Miembros del rolSus pantallas se ajustan sin recargar
session.changeda cada miembro. No se envía correo masivo. - Super adminElimina un rol creado
- API¿No es base y nadie lo tiene?
- Base de datosLo borra y registra código y nombre
Los registros anteriores que apuntaban al rol quedan con
target_role_idvacío (SET NULL), pero su detalle conserva el código y el nombre.
Eliminar (pasos 9 a 11) es un camino aparte, con su propio inicio.
Qué ve la persona en cada error
| Código | HTTP | Cuándo | Mensaje en pantalla |
|---|---|---|---|
ROLE_OUTRANKED | 403 | El rol está en su nivel o por encima | Este rol está en tu nivel o por encima, así que no lo puedes cambiar. |
ROLE_LOCKED | 409 | Se intenta editar o eliminar el Super admin | El rol Super admin tiene siempre todos los permisos, así que no se edita ni se elimina. |
ROLE_SYSTEM | 409 | Se intenta eliminar un rol base | Este es uno de los roles base de Trazo, así que no se puede eliminar. Sí puedes editarlo. |
ROLE_IN_USE | 409 | El rol tiene personas | Hay personas con este rol. Cámbiales el rol antes de eliminarlo. |
ROLE_LEVEL_NOT_ALLOWED | 422 | El nivel no está por debajo del suyo | Elige un nivel por debajo del tuyo: como máximo {max}. |
ROLE_CODE_FORMAT | 422 | El código no cumple el formato | Usa solo letras minúsculas sin tildes, números y guion bajo, empezando por una letra (por ejemplo, soporte_n2). |
PERMISSION_NOT_GRANTABLE | 422 | Incluye permisos que él no tiene | Solo puedes conceder permisos que tú también tienes. Revisa los permisos marcados y vuelve a intentarlo. |
Dónde está en el código
CreateRole,UpdateRoleyDeleteRole.RoleAccessyRoleGate.DatabaseRoleRepository: miembros y poda de excepciones.RoleFormPage,RoleFieldsyuseRoles.- Explicación: Módulo Users.