- Updated examples in "estructura-web-por-entidades-y-operaciones.md" to reflect correct entity names and directory structures. - Clarified modal usage and component interactions in "impresoras-del-perfil.md". - Adjusted component descriptions in "logotipos-de-companias.md" for consistency. - Revised persistence model details in "normalizacion-de-la-persistencia.md" to remove outdated references and clarify relationships. - Enhanced dialog patterns in "patron-de-dialogos.md" with specific guidelines for field labels and validation. - Specified component reuse in "patron-de-listados-de-entidades.md" to include @repo/rdx-ui components. - Updated implementation status in "personas-y-departamentos.md" to reflect current features and pending tasks. - Clarified project scope and initial setup instructions in "plan-de-desarrollo.md" and "puesta-en-marcha.md". - Improved descriptions of workstation management in "puestos-de-trabajo.md" for better understanding of active/inactive states. - Enhanced resource management details in "recursos-campos-y-plantillas.md" to clarify relationships and pending features. - Revised best practices review in "revision-de-buenas-practicas.md" to reflect current project status and components. - Updated teleworking documentation in "teletrabajo.md" to include references to remote technical assistance. - Clarified user account management in "usuarios-y-acceso.md" to emphasize the importance of account deactivation.
44 lines
4.3 KiB
Markdown
44 lines
4.3 KiB
Markdown
# Usuarios y acceso
|
|
|
|
## Primera apertura
|
|
|
|
La instalación empieza sin cuentas ni contraseñas predeterminadas. En la primera visita a http://localhost:5173 aparece «Configura Metis Desk». Introducir nombre, correo y contraseña de al menos 8 caracteres para crear el administrador inicial.
|
|
|
|
Esa operación crea la cuenta y el marcador de instalación en una misma transacción. La configuración se cierra para siempre al completarla; dos peticiones simultáneas no pueden crear dos administradores. La cuenta inicial no se puede desactivar ni borrar. Su correo, nombre y contraseña sí se pueden cambiar.
|
|
|
|
Por ahora no existe un catálogo de roles. La cuenta inicial tiene una condición especial e inmutable y es la única que puede gestionar usuarios. El resto accede al espacio de soporte y puede cambiar su propia contraseña.
|
|
|
|
## Gestión
|
|
|
|
La pantalla «Usuarios» está disponible en `/settings/users`, desde el menú global y el menú de cuenta del administrador. El listado se muestra dentro del espacio de Metis Desk; las altas, ediciones y restablecimientos de contraseña se abren en formularios modales.
|
|
|
|
Desde «Usuarios» el administrador puede crear cuentas, editar nombre y correo, activar/desactivar usuarios y restablecer contraseñas. No se borran cuentas: la desactivación conserva su identidad y la atribución de los cambios registrados en los historiales.
|
|
|
|
El administrador cambia su propia contraseña en «Mi contraseña», proporcionando la contraseña actual. El restablecimiento de otro usuario invalida sus sesiones. Su nueva contraseña debe comunicarse por un canal privado; no hay envío automático de correos.
|
|
|
|
Los correos se normalizan a minúsculas y son únicos. El nombre se recorta en Application. Los DTOs estrictos no admiten campos para otorgar privilegios.
|
|
|
|
## Persistencia y sesiones
|
|
|
|
MariaDB persiste usuarios, el marcador de configuración y las sesiones. Las migraciones iniciales son aditivas e idempotentes y no recrean tablas ni reinician el marcador. No se utiliza sync para modificar el esquema.
|
|
|
|
Las contraseñas se guardan con scrypt y una sal aleatoria, nunca como texto. Las sesiones usan una cookie HttpOnly, SameSite=Strict y duración de ocho horas. El identificador de sesión se renueva al entrar y al cambiar la contraseña propia. No se guarda ningún token en localStorage.
|
|
|
|
Cada operación comprueba el estado y la versión de autenticación del usuario. Cambiar contraseñas o activar/desactivar cuentas invalida las sesiones previas. Los POST requieren el origen configurado y un token CSRF asociado a la sesión. Los intentos fallidos de acceso están limitados por dirección IP; el contador se mantiene en memoria en esta entrega local.
|
|
|
|
## Entorno local
|
|
|
|
Docker Compose inicia una MariaDB independiente en 127.0.0.1:3307. Su volumen conserva los datos al reiniciar. El archivo .env se genera localmente con secretos aleatorios y no se versiona. SESSION_SECRET debe conservarse entre arranques para mantener las sesiones.
|
|
|
|
APP_ORIGIN debe coincidir exactamente con el origen usado en el navegador; el valor local es http://localhost:5173. Usar 127.0.0.1 en el navegador requiere cambiar esta configuración. En un futuro despliegue con HTTPS, NODE_ENV=production activa Secure en la cookie; el proxy, backups y recuperación administrativa siguen pendientes de diseño.
|
|
|
|
## Pruebas
|
|
|
|
pnpm db:up prepara el entorno. pnpm test ejecuta pruebas de dominio, hashes, interfaz y HTTP con MariaDB. La prueba de integración solo puede limpiar metis_desk_test y comprueba ese nombre antes de hacerlo. Nunca limpia metis_desk.
|
|
|
|
Cubre configuración concurrente, cierre del bootstrap, protección de administrador en HTTP y SQL, contratos estrictos, correos duplicados, login, autorización, CSRF, rotación de sesión, cambio y restablecimiento de contraseña, desactivación/reactivación, cierre de sesión y límite de intentos.
|
|
|
|
## Pantalla de acceso
|
|
|
|
El acceso reúne la marca Metis Desk y el formulario en una tarjeta centrada. En escritorio se muestran en dos columnas; en pantallas estrechas la marca queda encima del formulario. El logotipo se comparte con la navegación global. No se muestra un selector de idioma antes de iniciar sesión; se conserva en el espacio autenticado. La configuración inicial utiliza la misma composición y mantiene sus campos y validaciones específicos.
|