Buscar en la documentación

Crear, editar y eliminar roles

Roles con su nivel, sus permisos y su política de MFA; cómo un cambio llega a todos sus miembros y qué roles no se tocan.

Módulo users2 min de lecturaVer en GitHub

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.
Diagrama5 carriles · 11 pasos · 3 salidas de error
SíNoSíNoSíNoSíNoCrea o edita un rol1Envía POST /roles oPATCH /roles/{code}2¿Rol pordebajo de sunivel y nobloqueado?3Responde 403, 409o 422¿Solo permisosque él tiene?4Responde 422¿Cambia elnivel, algosensible orelaja el MFA?5Confirma con sucódigo6Guarda el rol ypoda excepcionessobrantes7Sus pantallas seajustan sinrecargar8Elimina un rolcreado9¿No es base ynadie lotiene?10Responde 409ROLE_SYSTEM oROLE_IN_USELo borra y registracódigo y nombre11
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. 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.

  2. NavegadorEnvía POST /roles o PATCH /roles/{code}
  3. 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.

  4. API¿Solo permisos que él tiene?
  5. 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.

  6. Super adminConfirma con su código
  7. 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_created o role_updated en admin_actions con lo que cambió.

  8. Miembros del rolSus pantallas se ajustan sin recargar

    session.changed a cada miembro. No se envía correo masivo.

  9. Super adminElimina un rol creado
  10. API¿No es base y nadie lo tiene?
  11. Base de datosLo borra y registra código y nombre

    Los registros anteriores que apuntaban al rol quedan con target_role_id vací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ódigoHTTPCuándoMensaje en pantalla
ROLE_OUTRANKED403El rol está en su nivel o por encimaEste rol está en tu nivel o por encima, así que no lo puedes cambiar.
ROLE_LOCKED409Se intenta editar o eliminar el Super adminEl rol Super admin tiene siempre todos los permisos, así que no se edita ni se elimina.
ROLE_SYSTEM409Se intenta eliminar un rol baseEste es uno de los roles base de Trazo, así que no se puede eliminar. Sí puedes editarlo.
ROLE_IN_USE409El rol tiene personasHay personas con este rol. Cámbiales el rol antes de eliminarlo.
ROLE_LEVEL_NOT_ALLOWED422El nivel no está por debajo del suyoElige un nivel por debajo del tuyo: como máximo {max}.
ROLE_CODE_FORMAT422El código no cumple el formatoUsa solo letras minúsculas sin tildes, números y guion bajo, empezando por una letra (por ejemplo, soporte_n2).
PERMISSION_NOT_GRANTABLE422Incluye permisos que él no tieneSolo puedes conceder permisos que tú también tienes. Revisa los permisos marcados y vuelve a intentarlo.

Dónde está en el código