# Inicio de sesión

> La ficha de usuario de la barra de título, el diálogo de inicio de sesión y su teclado de PIN, el cambio de usuario y el cierre de sesión, lo que un cambio de identidad hace con la página abierta, y cómo inician sesión los navegadores y los circuitos remotos.

Iniciar sesión cambia los permisos en vigor en una pantalla, del rol **Sin sesión iniciada** al
rol de un usuario. No es obligatorio nunca: la estación abre con la identidad de acceso libre y
sigue utilizable ahí. Hay un solo camino de inicio de sesión con dos puertas, la **ficha de
usuario** de la barra de título y la raíz **Sesión iniciada ahora** de la página Usuarios, y las
dos abren el mismo diálogo sobre la misma comprobación. Un navegador que no puede ver siquiera
recibe una tercera superficie, el inicio de sesión de vista, que es el mismo panel sin el marco.

Iniciar sesión no es una mutación de la estación. Sigue disponible mientras el runtime está
detenido por el límite del modo gratuito, cuando se rechaza toda escritura de configuración.

## La ficha de usuario {#the-user-chip}

La ficha está a la derecha de la barra de título, después de las teclas de tema y de un
separador, en todas las rutas y en todas las conexiones. Muestra un glifo de persona con un
punto (verde con la sesión iniciada, gris si no) y el nombre visible con la sesión iniciada, o
**Iniciar sesión** cuando no hay nadie. Al pulsarla se abre el diálogo de inicio de sesión. La
ficha no muestra nunca el nombre de un rol: sin sesión iniciada es una llamada a la acción, con
la sesión iniciada es un nombre.

## El diálogo de inicio de sesión {#the-sign-in-dialog}

El diálogo se titula **Iniciar sesión**, o **Cambiar de usuario** mientras se muestra la lista y
ya hay alguien con la sesión iniciada. Mientras hay alguien con la sesión iniciada, su cabecera
dice "Sesión iniciada como **{name}**" con un botón **Cerrar sesión**. Esc o un clic fuera lo
cierran sin cambiar nada.

### La lista {#the-roster}

La lista son todos los usuarios locales de la estación, en el orden de la lista, cada fila con
una etiqueta de dos letras hecha con las iniciales, el nombre visible, y una de dos marcas: un
candado, "PIN obligatorio", o una flecha de entrada, "Inicia sesión al tocar". Al tocar un
usuario sin PIN se inicia sesión al instante. Al tocar un usuario con PIN se abre el paso del
PIN. Todas las pantallas ofrecen la misma lista, sea cual sea el rol con la sesión iniciada en
ellas.

Cuando la lista está vacía, el diálogo muestra el motivo en lugar de una lista en blanco:

| Situación | Texto |
| --- | --- |
| Todavía no hay usuarios locales | "Esta estación todavía no tiene usuarios locales. El primero, el administrador principal, se crea en la página Usuarios." |
| La demostración publicada | "Esta es la demostración publicada, así que no hay ninguna cuenta con la que iniciar sesión. Aquí todo es de solo lectura." |

### El paso del PIN {#the-pin-step}

El paso del PIN muestra la etiqueta y el nombre del usuario elegido, un botón **Atrás** para
volver a la lista, el antetítulo **Introduzca el PIN**, y el teclado del PIN: un visor que
muestra un punto por dígito tecleado (nunca el dígito) y, mientras está vacío, un cursor
parpadeante si el teclado tiene el foco, que toma al abrirse el paso, o el intervalo aceptado si
no lo tiene; las teclas de 1 a 9, una tecla de borrado, el 0, y una tecla de confirmación que se
enciende en cuanto hay 4 dígitos. El teclado deja de aceptar a los 6 dígitos. Es además un
control de teclado: el teclado toma el foco al abrirse el paso, los dígitos se añaden, Retroceso
borra, Entrar confirma. Al hacer clic en el visor, el teclado recupera el foco sin levantar
ningún teclado en pantalla.

Un rechazo se queda en el paso, debajo del teclado, y vacía el visor para el próximo intento:

| Texto | Cuándo |
| --- | --- |
| Ese PIN no es correcto. | El PIN no se verificó. |
| Demasiados PIN incorrectos. Vuelva a intentarlo en {wait}. | Un circuito de navegador llegó al límite de PIN incorrectos; la espera se lee en segundos por debajo del minuto, y en minutos enteros por encima. |
| No se pudo iniciar sesión. | Se rechazó un usuario sin PIN (quitado de la lista mientras tanto). |

Mientras un inicio de sesión está en vuelo, la lista y el teclado quedan inertes, así que un
toque doble no puede lanzar un segundo intento.

## Cambiar de usuario y cerrar sesión {#switching-and-signing-out}

**Cambiar de usuario** es el mismo diálogo abierto sobre una pantalla con la sesión iniciada:
elija otro usuario, y la identidad cambia sin ningún cierre de sesión de por medio. **Cerrar
sesión**, en la cabecera del diálogo o en el panel Sesión iniciada ahora, devuelve la pantalla
al rol Sin sesión iniciada. En la ventana de la propia estación borra la sesión de la estación;
en un navegador borra solo esa conexión.

Todos los desenlaces se informan en el registro de acciones de la conexión, en la barra de
estado:

| Desenlace | Texto del registro |
| --- | --- |
| Sesión iniciada | Sesión iniciada como {name}. |
| Rechazado, nadie con la sesión iniciada | Inicio de sesión rechazado. Nadie tiene la sesión iniciada. |
| Rechazado, alguien con la sesión iniciada | Inicio de sesión rechazado. Sigue la sesión iniciada de {name}. |
| Bloqueado | Inicio de sesión bloqueado tras demasiados PIN incorrectos. Vuelva a intentarlo en {wait}. (seguido de la misma línea de identidad) |
| Sesión cerrada | Sesión cerrada. o {name} cerró la sesión. |

Cada intento deja además una línea en la consola de Eventos, bajo el componente **Acceso a la
estación**, nombrando la cuenta y de dónde vino el intento ("the shell webview" para la ventana de
la propia estación, "a browser at {address}" para un navegador), así que las elevaciones de un
turno se pueden leer después. Un inicio de sesión logrado sella el último acceso del usuario,
que muestra la lista.

## Identidad por conexión {#per-connection-identity}

La ventana de la propia estación (el webview embebido que es el shell de escritorio) gobierna la
**sesión de la estación**: iniciar sesión ahí es iniciar sesión en el banco de pruebas. Todos
los navegadores, tanto en una tableta al otro lado de la red como en la propia máquina de la
estación, llevan su **propio** operador: iniciar sesión ahí cambia solo ese navegador, y no
hereda ni cambia nunca quién tiene la sesión iniciada en el banco. La ficha de usuario, el panel
Sesión iniciada ahora y todos los permisos que se leen en una pantalla responden por la conexión
de esa pantalla, así que un espectador remoto no puede tomar prestado nunca al administrador
sentado en la estación.

Los dos caminos difieren en una cosa más. Los PIN incorrectos de un navegador se cuentan, por
cuenta y por dirección: cinco seguidos cierran la puerta un minuto, cada nueva tanda de cinco
dobla la espera hasta los quince minutos, y una racha de fallos que lleva cinco minutos en
silencio se olvida. La ventana de la propia estación no tiene contador, a propósito: quien
teclea en el banco está en la máquina, y un bloqueo sería la única manera de que una estación
dejara fuera a su propio operador.

## Qué cambia cuando cambia la identidad {#what-changes-when-the-identity-changes}

Todas las superficies leen la identidad en vivo, así que un inicio de sesión, un cierre de
sesión, la edición de un rol o la retirada de un usuario surten efecto al instante, en todas las
conexiones a las que llegan:

- La barra de navegación se redibuja con las entradas que el rol nuevo puede abrir. Si la página
  en la que usted está pertenece a una entrada que la identidad nueva no ve, el shell navega a la
  primera entrada que sí ve.
- Cada página vuelve a comprobar su propio permiso; un navegador que alcanza una ruta que su rol
  no abre recibe la superficie de inicio de sesión en lugar de la página.
- Todos los verbos y todos los campos vuelven a comprobar el rol en el momento en que se pulsan,
  así que una pantalla dibujada con la identidad anterior no puede actuar con ella.
- La edición de un rol en la página Usuarios llega a todos los usuarios que lo tienen, con la
  sesión iniciada o sin ella; un usuario quitado de la lista cae al rol Sin sesión iniciada en
  todas las conexiones que tenía.
- Los sinópticos que la lista Visible para esconde del rol nuevo salen de la lista de View, y una
  dirección tecleada para uno de ellos cae en silencio.

## Navegadores y acceso remoto {#browsers-and-remote-access}

Un navegador en la propia máquina de la estación es una conexión de loopback: ve siempre, con el
rol Sin sesión iniciada hasta que alguien inicie sesión en él. Un navegador de otro dispositivo
alcanza la estación solo cuando el [Acceso remoto](remote-access) está encendido, y
entonces ve solo si su identidad tiene **Acceso remoto (LAN)**. Ese interruptor viene apagado en
el rol Sin sesión iniciada, así que encender el acceso remoto no expone nada hasta que un usuario
con el permiso inicie sesión en el dispositivo, o hasta que se conceda deliberadamente al rol de
acceso libre para un quiosco o una tableta.

Un navegador que no puede ver recibe el **inicio de sesión de vista** en lugar de cualquier
página: la marca, "Ganter Lab", "Estación", y el panel de inicio de sesión sin barra de título
ni barra de navegación alrededor. La línea que hay sobre la lista nombra lo que se rechazó:

| Línea | Cuándo |
| --- | --- |
| Inicie sesión para ver esta estación desde la red. | Una conexión de red cuya identidad no tiene Acceso remoto (LAN). Con un usuario con la sesión iniciada ahí: "El rol de **{name}** no tiene acceso remoto. Inicie sesión como un usuario cuyo rol lo conceda." |
| Inicie sesión para abrir esta página. | Una conexión que puede ver, en una ruta que su rol no abre. Con un usuario con la sesión iniciada: "El rol de **{name}** no abre esta página. Inicie sesión como un usuario cuyo rol sí la abra." Sin nadie: "Aquí no hay nadie con la sesión iniciada, y esta página no está abierta al rol **Sin sesión iniciada**. Inicie sesión como un usuario cuyo rol la abra." |

Al cerrar sesión en un dispositivo de red cuyo rol Sin sesión iniciada no tiene Acceso remoto
(LAN), ese dispositivo cae de nuevo al inicio de sesión de vista. Los PIN viajan por la red en
texto claro salvo que la estación sirva HTTPS, un ajuste de Acceso remoto.

## Dispositivos configurados {#configured-devices}

Una tableta o un ordenador puede configurarse en la página Acceso remoto para que la estación lo reconozca y lo abra como dice su fila (vea [Dispositivos configurados](remote-access#configured-devices)). Cuatro de sus ajustes cambian quién tiene la sesión iniciada en él, o qué se puede pulsar allí:

| Ajuste | Qué hace |
| --- | --- |
| Un usuario fijo | El dispositivo entra como ese usuario, sin iniciar sesión, con su rol: el chip lleva el nombre del usuario, las páginas y los sinópticos siguen el rol, y un acto registrado allí es de ese usuario. Solo puede serlo un usuario cuyo rol tenga Acceso remoto (LAN). Si ese usuario se elimina, o el rol pierde el permiso, el dispositivo pide iniciar sesión como cualquier navegador hasta que se ajuste de nuevo. |
| Iniciar sesión por encima | Cualquiera de la lista puede seguir iniciando sesión en el dispositivo, desde el chip o, en un dispositivo fijado en su sinóptico inicial, desde la tecla discreta **Iniciar sesión** de una esquina, con el PIN como en cualquier sitio. El dispositivo lleva entonces el rol de esa persona. Cerrar la sesión devuelve el usuario fijo, nunca el rol Sin sesión iniciada, e iniciar sesión nunca quita la fijación. |
| Vuelta tras minutos sin tocar | Cuando nadie toca el dispositivo durante sus minutos, se cierra la sesión de quien la había iniciado por encima del usuario fijo y el dispositivo vuelve a su sinóptico inicial. |
| Solo lectura | Nadie manda nada desde el dispositivo, sea quien sea quien tenga la sesión iniciada, incluido un administrador: el rol sigue decidiendo qué páginas y sinópticos se muestran, y cada mando en ellos sigue dibujado, atenuado con el motivo "Este dispositivo es de solo lectura." Abrir otro sinóptico con el botón de un sinóptico sigue funcionando, igual que iniciar y cerrar sesión. |

Cada registro que el diario técnico guarda de lo que se hizo desde un dispositivo configurado lleva el nombre del dispositivo junto al del usuario.

## Lo que iniciar sesión no hace {#what-signing-in-does-not-do}

- No detiene, no arranca ni cambia el runtime, y no afecta al servidor OPC UA embebido ni a un
  agente conectado por MCP.
- No inicia la sesión de la estación en su cuenta Ganter. Eso es la página
  [Cuenta](account-ganter-account) y pertenece a la estación, no a un usuario.
- No abre nada que el rol no tenga. La elevación es exactamente los interruptores del rol; no hay
  ninguna anulación temporal ni ninguna excepción por usuario.
- No bloquea la ventana de la propia estación tras unos PIN incorrectos, y no recuerda nunca un
  PIN.
- No se puede intentar en la demostración publicada, cuya lista está vacía por diseño.
