Buscar en la documentación

Cambio de rol o desactivación en vivo

Cómo un cambio de rol, de permisos o de estado de una cuenta llega al instante a sus pantallas abiertas, sin esperar a la siguiente petición.

Módulo realtime1 min de lecturaVer en GitHub

Cuando alguien administra a una persona (le cambia el rol o los permisos, edita sus datos, la desactiva, restablece su MFA o su acceso) o esa persona cambia o recupera su contraseña, la API avisa por su canal personal. Lo mismo pasa con todos los miembros de un rol cuando se edita ese rol. El mensaje no trae datos: el navegador vuelve a pedir /auth/me y la respuesta decide qué pasa.

Diagrama5 carriles · 7 pasos · 1 salidas de error
SíNoCambia rol,permisos o estadode una persona1Guarda el cambio ysu registro2Envíasession.changed asu canal personal3Lo entrega a cadapestaña abierta4Su pantalla pideGET /auth/me5¿Su sesiónsiguevaliendo?6Se cierra lasesión y va alloginMenú y botones seajustan a suspermisos nuevos7
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. AdministraciónCambia rol, permisos o estado de una persona
  2. Base de datosGuarda el cambio y su registro

    Al desactivar, restablecer el MFA o el acceso, también borra todos sus tokens de sesión. Todo queda en admin_actions.

  3. APIEnvía session.changed a su canal personal

    Puerto compartido SessionSignals; el aviso sale cuando la transacción se confirma. Si se editó un rol, va a todos sus miembros.

  4. ReverbLo entrega a cada pestaña abierta
  5. Persona afectadaSu pantalla pide GET /auth/me
  6. API¿Su sesión sigue valiendo?
  7. Persona afectadaMenú y botones se ajustan a sus permisos nuevos

    El menú del dock, los botones de cada pantalla y los canales de tiempo real (entra a los nuevos, sale de los que ya no aplican).

Cambiar la contraseña desde Mi cuenta también envía este aviso: las otras sesiones de la persona se cierran al instante, y la pestaña desde la que la cambió sigue abierta porque su token no se revocó.

Dónde está en el código