metis-desk/docs/usuarios-y-acceso.md
David e061d60eb7 Refactor user management components and improve workspace page structure
- Removed UserManagementDialog and updated UserManagement export in user list.
- Adjusted CustomWorkspace to directly render UserManagement based on user permissions.
- Enhanced IdentityWorkspace layout for better accessibility and visual appeal.
- Introduced new AssetPanelSummary and WorkstationDetailPage components for asset management.
- Implemented useListQuery for consistent data fetching across catalog and resources pages.
- Added PersonAvatarGroup for displaying user avatars in a group format.
- Created workstation detail controller and related tests for improved workstation management.
- Added MetisLogo component for branding consistency.
2026-10-11 13:49:28 +02:00

4.3 KiB

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 para las futuras relaciones con tickets e intervenciones.

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.