Una cuenta no se borra: se desactiva. Así sus incidentes, su historial y su auditoría siguen apuntando a una persona real. Una cuenta desactivada no puede ingresar (recibe el mismo mensaje que unos datos incorrectos) y no aparece para recibir incidentes. Sus incidentes asignados no se reasignan solos: es decisión de quien supervisa.
Paso a paso
- AdministraciónPulsa Desactivar y confirma
En la ficha de la persona; el botón aparece solo si la API lo permite (
actions). - NavegadorEnvía POST /users/{id}/deactivate
- API¿Puede administrarla y está activa?
users.activate, no ser él mismo y tener un nivel mayor. - Base de datosSi es Super admin, ¿queda otro activo?
Lee los Super admin activos con
FOR UPDATEdentro de la transacción: dos desactivaciones a la vez no pueden dejar a Trazo sin ninguno. - Base de datosLa desactiva y borra sus sesiones
En la misma transacción:
is_active = false, todos sus tokens revocados yadmin_actions(user_deactivated). - Persona afectadaRecibe session.changed
Por su canal personal, si tiene Trazo abierto.
- Persona afectadaSu pantalla se cierra con aviso y recibe un correo
Al pedir
/auth/mela API respondeUNAUTHENTICATED. Aunque el aviso no llegue, la regla de cada token rechaza las cuentas desactivadas en la siguiente petición.
Activar (POST /users/{id}/activate) sigue el mismo camino sin el paso del Super admin ni el cierre de sesiones; la persona vuelve a entrar con su contraseña de siempre y recibe un correo.
Qué ve la persona en cada error
| Código | HTTP | Cuándo | Mensaje en pantalla |
|---|---|---|---|
USER_ALREADY_INACTIVE | 409 | Ya estaba desactivada | Esta cuenta ya está desactivada. Recarga la página para ver su estado actual. |
USER_ALREADY_ACTIVE | 409 | Ya estaba activa | Esta cuenta ya está activa. Recarga la página para ver su estado actual. |
LAST_SUPER_ADMIN | 409 | Es el último Super admin activo | Trazo necesita al menos un Super admin activo. Antes de este cambio, da el rol de Super admin a otra persona. |
USER_SELF_MANAGEMENT | 403 | Intenta desactivarse a sí mismo | Tu propio rol, tus permisos, tu estado y tu acceso los cambia otra persona que administre Trazo. |
USER_OUTRANKED | 403 | La persona tiene su mismo nivel o uno mayor | Esta persona tiene un rol de tu mismo nivel o superior, así que no puedes cambiar su cuenta. |
Dónde está en el código
ChangeUserStatus: transacción, sesiones, aviso y correo.RootGuard: siempre un Super admin activo.UserAccess.AuthServiceProvider: un token de cuenta desactivada no vale.UserDetailPageyAccessCard.- Explicación: Módulo Users.