Buscar en la documentación

Cambiar rol o permisos (reautenticación)

Cambiar el rol de una persona o sus permisos uno por uno, con la jerarquía, la regla de no conceder lo que no se tiene y el código de la aplicación para lo sensible.

Módulo users2 min de lecturaVer en GitHub

Cada persona tiene un rol y, encima, excepciones propias: permisos concedidos y quitados (user_permissions). Sus permisos efectivos son los del rol, más los concedidos, menos los quitados (gana el quitado).

  • Cambiar el rol (PUT /users/{id}/roles) deja a la persona con los permisos exactos del rol nuevo: sus excepciones se borran y el registro guarda cuáles eran.
  • Cambiar permisos (PUT /users/{id}/permissions) recibe la lista que la persona debe tener; la API guarda la diferencia con el rol como excepciones.

Lo sensible (permisos de usuarios, roles o sistema) pide el código de la aplicación autenticadora de quien administra, aunque ya tenga la sesión abierta.

Diagrama5 carriles · 9 pasos · 2 salidas de error
SíNoSíNoSíNoSíNoElige el rol nuevoo marca lospermisos1Envía el cambio sincódigo2¿Puedeadministrar aesta persona?3Responde 403¿Rol pordebajo ypermisos queél tiene?4Responde 422 o409¿Toca algosensible?5¿Llegó uncódigo válido?6Pide el código yreenvía7Guarda el rol o lasexcepciones8Sus pantallas seajustan al instantey recibe un correo9
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. AdministraciónElige el rol nuevo o marca los permisos

    En la ficha de la persona. PermissionChecklist muestra solo lo que puede conceder y marca los sensibles.

  2. NavegadorEnvía el cambio sin código

    useReauth intenta primero sin código; solo si la API lo pide, abre el diálogo.

  3. API¿Puede administrar a esta persona?

    Necesita el permiso de la acción, no puede ser él mismo y debe tener un nivel mayor. El Super admin administra a todos menos a sí mismo.

  4. API¿Rol por debajo y permisos que él tiene?

    Nadie concede lo que no tiene, salvo la cima. Al Super admin no se le conceden ni se le quitan permisos sueltos: los tiene todos por su rol.

  5. API¿Toca algo sensible?

    El rol anterior o el nuevo, o los permisos que cambian.

  6. API¿Llegó un código válido?

    Sin código responde REAUTHENTICATION_REQUIRED y el navegador abre AppCodeDialog. El código no se puede repetir. Cinco incorrectos en un minuto bloquean la reautenticación (423) y dejan el evento ReauthenticationLocked. Quien no tiene MFA no puede confirmar: REAUTHENTICATION_UNAVAILABLE.

  7. NavegadorPide el código y reenvía
  8. Base de datosGuarda el rol o las excepciones

    Con lock sobre los Super admin activos: si el cambio dejaría a Trazo sin ninguno, responde LAST_SUPER_ADMIN. Registro en admin_actions con el antes y el después (y las excepciones borradas, si cambió el rol).

  9. Persona afectadaSus pantallas se ajustan al instante y recibe un correo

    Por session.changed en su canal personal (ver "Cambio de rol o desactivación en vivo"). El correo dice qué cambió.

El paso 7 vuelve al 6 cuando falta el código: es la única vuelta del diagrama, con línea punteada.

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
USER_SELF_MANAGEMENT403Intenta cambiar su propio rol o permisosTu propio rol, tus permisos, tu estado y tu acceso los cambia otra persona que administre Trazo.
USER_OUTRANKED403La persona tiene su mismo nivel o uno mayorEsta persona tiene un rol de tu mismo nivel o superior, así que no puedes cambiar su cuenta.
ROLE_NOT_ASSIGNABLE422El rol nuevo no está por debajo del suyoNo puedes dar ese rol: solo puedes asignar roles por debajo del tuyo.
PERMISSION_NOT_GRANTABLE422Concede un permiso que él no tieneSolo puedes conceder permisos que tú también tienes. Revisa los permisos marcados y vuelve a intentarlo.
USER_ROOT_FULL_ACCESS409Permisos sueltos a un Super adminEl Super admin tiene todos los permisos por su rol, así que no se le conceden ni se le quitan permisos uno por uno.
LAST_SUPER_ADMIN409El cambio dejaría sin Super admin activoTrazo necesita al menos un Super admin activo. Antes de este cambio, da el rol de Super admin a otra persona.
REAUTHENTICATION_REQUIRED422Falta el códigoPara confirmar este cambio, escribe el código de tu aplicación de autenticación.
REAUTHENTICATION_UNAVAILABLE422Quien administra no tiene MFAPara hacer este cambio necesitas tener activa la verificación en dos pasos. Actívala desde Mi cuenta y vuelve a intentarlo.
REAUTHENTICATION_LOCKED423Cinco códigos incorrectos en un minutoEscribiste varios códigos incorrectos seguidos. Espera {wait} y vuelve a intentarlo.

Dónde está en el código