Iniciar sesión con cuenta nativa
Autentica una cuenta nativa existente desde `auth/login` con correo electrónico y contraseña. Al completarse, Antylogic guarda la sesión local, recarga usuario y permisos, y abre la aplicación autenticada. Este flujo no crea cuentas, no usa Acceso interno y no reanuda demos.
En este artículo
Use esta guía cuando un operador ya tenga una cuenta nativa de Antylogic y necesite entrar desde el modo Cuenta de la pantalla de login.
La pantalla valida correo y contraseña antes de llamar al backend. Si la respuesta devuelve `access_token` y `refresh_token`, la app guarda los tokens, recarga usuario y permisos, y entra en el stack autenticado.
El modo `Acceso interno`, las demos públicas, OAuth y el alta nativa pertenecen a acciones separadas.
Antes de empezar
- La app debe abrirse sin sesión activa; si hay tokens locales, cookie `auth_session` válida o demo pública reanudable, `LoginScreen` no se muestra.
- Debe existir una identidad nativa con email y contraseña. `LoginScreen` no envía `display_name`, por lo que no registra identidades nuevas.
- El usuario de aplicación asociado debe existir o poder provisionarse en `users` y estar activo (`users.is_active = true`).
- El servicio app debe poder validar credenciales y emitir sesión a través del servicio auth con `authclient.ClientID` y `authclient.ClientSecret`.
- Para capturas de éxito use solo credenciales nativas temporales del runtime de documentación; no use `DEMO_SESSION_ID`, `DEMO_USER_ID`, `DEMO_USER_EMAIL` ni credenciales reales.
Instrucciones
- 1.
Abrir la pantalla de acceso
Abra `auth/login` sin sesión. Compruebe que aparece el modo Cuenta con `Correo electrónico`, `Contraseña`, `Recordarme` e `Iniciar sesión`. `Acceso interno` puede aparecer como alternativa, pero no forma parte de esta acción.
- 2.
Escribir las credenciales
Introduzca el correo y la contraseña de la cuenta nativa. La app recorta espacios del correo y mantiene la contraseña solo como entrada para el envío.
- 3.
Enviar el inicio de sesión
Pulse `Iniciar sesión`. La pantalla bloquea envíos duplicados y llama a `POST /api/app/auth/callback/native` con `email`, `password`, `remember` y los parámetros de navegación disponibles (`state`, `return_to`, `lang`).
- 4.
Resolver la sesión
El backend valida método, payload, `state`, `client_id` y `scopes`; el servicio auth normaliza el email, comprueba la contraseña de una identidad existente y emite tokens si el usuario de app está activo.
- 5.
Entrar en la app autenticada
Cuando la respuesta incluye `result.access_token` y `result.refresh_token`, la app guarda ambos en `tokenStorage`, invalida `authKeys.me` y `appKeys.myPermissions`, y carga `GET /api/app/me` y `GET /api/app/me/permissions`.
- 6.
Gestionar errores visibles
Si hay errores de campo o credenciales, corrija correo o contraseña. Ante errores de red o `500+`, la app abre `ApiConnectionError`; si faltan tokens en la respuesta, permanece en login con un mensaje general.
Validaciones y límites
- `Correo electrónico` es obligatorio y debe contener `@`.
- `Contraseña` es obligatoria y debe tener al menos 6 caracteres.
- Mientras `isSubmitting` o `isDemoSubmitting` están activos, no se envía otra solicitud.
- `POST /api/app/auth/callback/native` y el alias `POST /api/app/callback/native` rechazan métodos distintos de `POST`.
- Si llega `state` y existe cookie temporal nativa, ambos valores deben coincidir; si no, se reinicia el flujo nativo por `error.request.invalid_state`.
- La identidad debe existir, tener `PasswordHash` y verificar la contraseña; sin `display_name`, una identidad nueva se rechaza y no se registra desde esta pantalla.
- El usuario de app debe quedar activo; si `GET /api/app/me` o `GET /api/app/me/permissions` responde `401` o `404`, la app limpia tokens, cookies y cachés.
- `Recordarme` se envía en el payload, pero esta guía no promete una duración ampliada de sesión porque el camino app inspeccionado no demuestra que se propague al token exchange.
- La acción no selecciona organización ni ubicación, ni inicia `auth.internal.login`, demo pública, OAuth o signup.
Resultado esperado
La cuenta nativa queda autenticada, los tokens se guardan localmente y Antylogic abre el stack autenticado listo para cargar usuario, permisos y contexto operativo.