Iniciar sesión
ARGUS usa Firebase Authentication como proveedor de identidad. Todos los métodos de inicio de sesión resuelven a un User de Firebase, el token de sesión se refresca automáticamente cada hora, y las rutas protegidas por el authGuard redirigen a /login si el token desaparece.
La pantalla de inicio de sesión
Abre /. Sin autenticación, el authGuard te envía a /login. El modo por defecto es correo + contraseña:
- Correo — autocompletado (
autocomplete="username") habilitado. - Contraseña —
autocomplete="current-password". Enter para enviar. - Botón Login — al tener éxito vuelves a
/.
Debajo del formulario: un conmutador de modo a teléfono (SMS OTP, requiere una organización con phone-auth habilitado) y un panel de capacidades (i circular abajo a la derecha).
Métodos de inicio de sesión
Correo y contraseña
El método por defecto para toda organización. Si aún no tienes cuenta, un administrador debe enviarte una invitación — no puedes autoregistrarte con un correo nuevo.
Inicio de sesión único (SSO)
En los planes Command o Sovereign, el SSO se habilita a nivel de organización (SAML / OIDC a través de Firebase). Al tener éxito, el registro de usuario se aprovisiona automáticamente y se asocia al rol que tengas asignado.
Aspiracional: la plantilla de login actualmente desplegada expone solo correo + teléfono. Las organizaciones con SSO habilitado redirigen directamente al IdP desde su subdominio de login.
OTP por teléfono
Cambia al modo teléfono, introduce tu número en formato E.164 (p. ej. +14155551234), resuelve el reCAPTCHA, pulsa Enviar OTP, luego introduce el código de 6 dígitos y pulsa Verificar.
Invitaciones por enlace mágico
Cuando un administrador te invita, recibes un correo con un enlace como https://app.argus.tactical/invite?token=<opaque>. Al abrirlo se valida el token, se muestra la organización + rol que se te ofrecen, y te permite iniciar sesión o registrarte en un solo flujo — ver Invitaciones.
Olvidé mi contraseña
La plantilla actualmente desplegada no incluye un enlace en línea “Olvidé mi contraseña” (aspiracional). Hoy, un administrador envía un correo de restablecimiento de contraseña desde Admin → Usuarios → [usuario] → Enviar restablecimiento de contraseña. Cuando la UI se despliegue, será un flujo de restablecimiento estándar de Firebase.
Selección entre varias organizaciones
Si tu cuenta pertenece a más de una organización, ARGUS restaura la última que usaste (persistida en localStorage bajo sar.activeOrg mediante OrgService.restoreActiveOrg()). Cámbiala desde el menú del avatar — haz clic en tu avatar; la cabecera del desplegable muestra la organización activa y la insignia de rol; elige Cambiar organización. Cambiar la organización activa recarga la navegación dependiente de permisos y el dashboard.
Duración de la sesión
- Los tokens de ID se refrescan cada 1 hora de forma silenciosa.
- El token de refresco tiene una ventana deslizante de 24 horas — mantente activo y seguirás conectado; cierra la pestaña durante >24h y tendrás que iniciar sesión de nuevo la próxima vez.
- Cerrar sesión desde otro dispositivo invalida el token de refresco en todas partes.
Errores comunes
La tarjeta de login se sacude y muestra un mensaje. Todos provienen de Firebase Auth; el texto para el operador es intencionadamente vago cuando corresponde.
| Mostrado | Código de Firebase | Significado |
|---|---|---|
| Credenciales incorrectas. | auth/invalid-credential, auth/wrong-password, auth/user-not-found, auth/invalid-email | Correo o contraseña incorrectos. El mismo mensaje para los cuatro — no filtramos qué campo falló. |
| Acceso denegado. Contacta a tu administrador. | auth/user-disabled | Cuenta deshabilitada. |
| Demasiados intentos fallidos. | auth/too-many-requests | Limitado por tasa. |
| Error de red. | auth/network-request-failed | No se puede alcanzar Firebase. |
| Este método de inicio de sesión no está habilitado. | auth/operation-not-allowed | Método desactivado para tu organización. |
| Sesión expirada. | auth/requires-recent-login | Vuelve a autenticarte. |
| Inicio de sesión cancelado. | auth/popup-closed-by-user | Se cerró el popup antes de finalizar. |
En compilaciones de desarrollo, el código bruto se muestra debajo del mensaje amigable; en producción, queda oculto.
“Sin organización” es aparte: la autenticación tuvo éxito pero tu usuario no tiene membresía en ninguna organización — aterrizas en el dashboard con un estado vacío; pide a un administrador que te invite.
Cerrar sesión
Haz clic en tu avatar (arriba a la derecha) → Cerrar sesión (al final del desplegable, en rojo). El cierre de sesión llama a signOut() en la instancia de Firebase Auth, limpia el estado de la app, navega a /login, y recarga forzadamente la página (window.location.replace('/login')) para restablecer el estado en tiempo de ejecución.