Usa el contrato de sesión revisado
La gestión de sesiones de Driver App tiene dos flujos relacionados, pero distintos:
- Sessions muestra y elimina sesiones actuales u otras sesiones de la cuenta cuando esta usa la estrategia multisesión.
- logout comprueba los pedidos activos, solicita el cierre de sesión del servidor y coordina la limpieza local de sesión, pedidos y almacenamiento.
Ningún flujo es atómico. Una lista visible, éxito de API principal, cambio de autenticación local o pantalla de cierre de sesión no demuestra que se haya completado la limpieza de token, push, disponibilidad, registros, trabajos, socket, proveedor o almacenamiento.
Disponibilidad
La ruta Sessions está registrada en la navegación autenticada y se abre desde Profile. Las cuentas que usan la estrategia multisesión pueden cargar filas de sesión con fecha e indicadores de sesión actual. Con otros estados de estrategia aparece un control de activación en vez de una lista.
Requisitos previos
- Ámbito propio autenticado y estado actual de estrategia de sesión.
- Distinción explícita entre todas las sesiones, la actual y las demás.
- Confirmación destructiva para la eliminación individual y masiva.
- Plan completo de limpieza local/servidor/proveedor si se elimina la sesión actual.
- Control de pedidos activos y recuperación a cargo de la persona responsable del pedido antes de cerrar sesión.
- Usa solo ID/fechas/tokens de sesión sintéticos en pruebas y documentación.
Límites de responsabilidad
| Límite | Responsabilidad | Límite |
|---|---|---|
| Interfaz Sessions | Mostrar carga/lista/vacío/activación, indicador de sesión actual y confirmaciones. | El orden de presentación no es el orden/vigencia del servidor. |
| Controlador Sessions | Listar sesiones, ordenarlas opcionalmente, eliminar una/todas/las demás y actualizar la lista local. | La respuesta principal y los efectos de sesión local pueden divergir. |
| Eliminación de sesión actual | Eliminar la fila en el servidor y luego solicitar el cierre de sesión local. | El manejador revisado no espera el cierre local. |
| Eliminación de otra sesión | Quitar la fila devuelta de la lista local tras el éxito principal. | No se demuestra limpieza remota del dispositivo/token/proveedor. |
| Eliminación masiva | Eliminar la actual y todas, o conservar la actual según entrada explícita. | La confirmación se cierra antes de que termine el manejador asíncrono. |
| Ruta de activación | Reutilizar el contrato masivo conservando la actual y luego cambiar localmente los metadatos de estrategia. | El botón o metadatos locales no demuestran activación. |
| Cierre de sesión | Lectura del cliente de pedidos activos, cierre de sesión de API y limpieza local de sesión/pedidos/almacenamiento. | Fallos del control y limpieza pueden resolverse parcialmente. |
| API | Aplicar acceso propio/admin a sesiones y controles del servidor para cierre de sesión/pedidos. | No se ha confirmado la relación con el artefacto en ejecución. |
Entradas y resultados
| Entrada/acción | Resultado del cliente | Límite de fallo/parcial |
|---|---|---|
| Estrategia multisesión | Solicitud autenticada de lista y orden por fecha opcional. | La App no especifica un orden; la interfaz invierte el arreglo durante el render y muta el orden de presentación. |
| Estrategia heredada/sin lista | Lista local vacía y mensaje/control de activación. | La solicitud/resultado de activación y el cambio local de estrategia son independientes. |
| Eliminar otra sesión | Confirmación, eliminación de API y retirada local de la fila. | No se demuestra limpieza de sesión/proveedor remoto. |
| Eliminar sesión actual | Eliminar en API, quitar fila y solicitar cierre de sesión local. | No se espera el cierre; puede haber carreras de navegación/almacenamiento. |
| Eliminar todas las sesiones | Eliminación masiva por API, lista vacía y solicitud de cierre de sesión local. | La limpieza por sesión/proveedor y estado local son independientes. |
| Eliminar todas excepto la actual | Eliminación masiva por API y conservar localmente las filas actuales. | No se demuestra limpieza de sesiones remotas; la activación puede reutilizar metadatos del token actual. |
| logout | Control de pedidos activos seguido por limpieza local/en servidor. | Una excepción del control puede permitir continuar; no se espera el borrado general del almacenamiento. |
Seguridad y privacidad
- Nunca expongas ID de sesión, tokens, ID de socket, datos del dispositivo ni marcas de tiempo exactas en artefactos públicos.
- Exige autorización propio/admin para cada operación de lista/eliminación.
- Trata la eliminación de sesión actual y el cierre de sesión como flujos destructivos sensibles a la seguridad, con recibos completos y reversión/recuperación.
- Vincula las respuestas tardías de lista/eliminación/cierre a la generación actual de cuenta/sesión.
- No deduzcas que se cerró una sesión remota porque desapareció una fila local.
Límites y estados de fallo
| Estado | Significado | Respuesta de mantenimiento |
|---|---|---|
| Cargando/error | La lista/acción de sesiones no se ha resuelto. | No repetir ni ejecutar una acción destructiva. |
| Lista vacía | La respuesta actual no contiene sesiones que se puedan mostrar. | No demuestra que no exista una sesión/token remoto. |
| Indicador actual | La fila de API está marcada como actual. | Verifica generación de servidor/sesión antes de eliminar. |
| Fila retirada localmente | La eliminación principal informó éxito. | No se demuestra limpieza remota de proveedor/token. |
| Interfaz sin sesión | Cambió la autenticación local. | No se demuestra limpieza de servidor/almacenamiento/push/socket. |
| Cambia el orden | La interfaz invirtió/modificó la lista durante el render. | No uses el orden como evidencia de seguridad/vigencia. |
| Estado que parece activado | La estrategia local cambió tras la respuesta principal. | No se demuestran la función del servidor ni la semántica de la sesión actual. |
| Error del control de cierre | Falló la comprobación de pedidos activos. | Puede continuar ambiguamente; detente y concilia. |
Diagnóstico
Usa sesiones sintéticas y adaptadores interceptados de API/sesión/pedido/almacenamiento/socket/proveedor. Nunca elimines una sesión real ni cierres sesión para probar. Diagnostica por separado resultado de lista, orden/presentación, eliminación principal, cambio de sesión local, limpieza de almacenamiento y limpieza de proveedor/token.
Vuelve a revisar cuando cambien la estrategia de sesión, orden de lista, indicador de sesión actual, eliminación individual/masiva, activación, control de pedidos activos, cierre de sesión, almacenamiento local o limpieza del proveedor.
Guías relacionadas: Gestionar sesiones · Cerrar sesión · Eliminar cuenta · Inicio autenticado · Contrato de notificaciones · Acciones sin conexión