feat(mirada): mirada-greeter — greeter de login del escritorio carmen
App GPUI con app_id carmen.greeter: formulario usuario+contraseña que autentica con brahman-auth en un hilo de fondo y, en éxito, emite un SessionTicket por stdout para que el compositor haga el traspaso a modo sesión. Backend mock (MIRADA_GREETER_MOCK) o PAM. Incluye brahman-auth::SessionTicket (contrato de tiquet greeter→compositor, serializado a una línea con prefijo versionado) y el modo enmascarado de nahual-widget-text-input (TextInput::with_mask para contraseñas). 18 tests nuevos; greeter verificado por compilación + clippy. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# mirada-greeter
|
||||
|
||||
El greeter (pantalla de login) del escritorio carmen.
|
||||
|
||||
Una ventana GPUI: el compositor `mirada-compositor`, cuando bootea en
|
||||
modo greeter, la arranca como proceso hijo, la compone a pantalla
|
||||
completa (la reconoce por `app_id = "carmen.greeter"`) y le lee el
|
||||
stdout.
|
||||
|
||||
## Flujo
|
||||
|
||||
1. El usuario teclea usuario + contraseña. `Enter` en «usuario» pasa el
|
||||
foco a «contraseña»; `Enter` en «contraseña» autentica.
|
||||
2. La autenticación corre con [`brahman-auth`] en un hilo de fondo (PAM
|
||||
puede demorar ~2 s ante un fallo, no se congela la UI).
|
||||
3. En éxito, el greeter **imprime un `SessionTicket` a stdout** y
|
||||
termina. El compositor parsea esa línea y hace el traspaso a modo
|
||||
sesión sin reiniciar el servidor gráfico.
|
||||
|
||||
La línea de tiquet lleva el prefijo `MIRADA-SESSION-TICKET-v1`; el resto
|
||||
del stdout (logs) se ignora.
|
||||
|
||||
## Backend de autenticación
|
||||
|
||||
| Entorno | Backend |
|
||||
|---|---|
|
||||
| (por defecto) | PAM, servicio `carmen` (`/etc/pam.d/carmen`) |
|
||||
| `MIRADA_GREETER_PAM=<servicio>` | PAM con otro servicio |
|
||||
| `MIRADA_GREETER_MOCK=usuario:secreto` | Mock — credenciales fijas |
|
||||
|
||||
El modo mock sirve para iterar la UI en cajas sin PAM o con el greeter
|
||||
anidado dentro de otro escritorio:
|
||||
|
||||
```sh
|
||||
MIRADA_GREETER_MOCK=demo:demo cargo run -p mirada-greeter
|
||||
```
|
||||
|
||||
## Pendiente
|
||||
|
||||
El consumo del tiquet en `mirada-compositor` (modo greeter +
|
||||
`BodyMode::Session` + arranque de la sesión con setuid) — siguiente
|
||||
slice del DM.
|
||||
Reference in New Issue
Block a user