- 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.
64 lines
6.4 KiB
Markdown
64 lines
6.4 KiB
Markdown
# Accesos remotos de las personas
|
|
|
|
Documenta el recorrido «equipo de origen → herramienta → destino». Complementa la autorización de [teletrabajo](teletrabajo.md), sin modificar los permisos ordinarios sobre recursos ni abrir o cerrar conexiones reales. La [asistencia técnica remota](asistencia-tecnica-remota.md) está implementada como función separada.
|
|
|
|
## Datos y referencias
|
|
|
|
Cada acceso pertenece a una compañía y persona. Tiene UUID v7, historial y actor obtenido de la sesión. Las personas de las compañías no son usuarios de Metis Desk.
|
|
|
|
Origen: activo de la compañía, ordenador personal o móvil personal. En los dos últimos casos se registra únicamente el tipo: no se crea un activo, ficha técnica ni identificación individual. Varios ordenadores personales de una misma persona no se distinguen en esta primera versión.
|
|
|
|
Destino: red de la compañía, red de una sede opcional, un activo concreto o un recurso concreto del nuevo catálogo de recursos. Todas las referencias deben pertenecer a la compañía. Origen y destino no pueden ser el mismo activo. Seleccionar cualquier recurso no concede permiso sobre él.
|
|
|
|
La herramienta es un texto corto, con sugerencias VPN, RDP, AnyDesk, TeamViewer y Supremo. Admite nombres propios. «Necesita una VPN previa» documenta un requisito independiente: no identifica ni comprueba automáticamente otra conexión VPN. Los permisos habituales no se duplican por utilizar VPN. Sin credenciales en el formulario.
|
|
|
|
Persona, origen, destino y sede son fijos al editar. Para cambiar el recorrido, cerrar el anterior y dar de alta otro. Se pueden modificar herramienta, requisito VPN y notas mientras el acceso está abierto.
|
|
|
|
No puede haber dos accesos abiertos con la misma persona, origen, destino, sede y herramienta (sin distinguir mayúsculas/minúsculas en la herramienta). Distintas herramientas permiten recorridos distintos. Un acceso cerrado permite una nueva alta del mismo recorrido.
|
|
|
|
## Preparación y retirada
|
|
|
|
Alta en Pendiente de configurar o Configurado.
|
|
|
|
- Pendiente de configurar → Configurado o Nunca configurado.
|
|
- Configurado → Pendiente de retirar.
|
|
- Pendiente de retirar → Retirado.
|
|
|
|
Retirado y Nunca configurado son terminales; se consultan sin editar. Una repetición idéntica es idempotente y no genera revisión.
|
|
|
|
Registrar un acceso Configurado describe una situación documentada, aunque la autorización ya no sea efectiva. No bloqueamos registrar precisamente aquello que debe revisarse o retirarse.
|
|
|
|
Revisión calculada al leer para accesos abiertos si están pendientes de retirar, falta autorización efectiva de teletrabajo, se retira el activo de origen/destino o se desactiva el recurso destino. La autorización depende de la vigencia y de que la persona esté activa. Los cambios de estas referencias no alteran el historial del acceso. Un acceso cerrado no muestra revisión.
|
|
|
|
La disponibilidad del recurso se comprueba mediante su estado activo; esta primera versión no verifica la conectividad real, restricciones de red, pertenencia a grupos ni permisos sobre cada destino.
|
|
|
|
## Interfaz
|
|
|
|
Sección Accesos remotos dentro del espacio de compañía, búsqueda por persona/origen/destino/herramienta y filtro para consultar cerrados. Alta desde la cabecera derecha, edición e historial en modales. Ayuda y ejemplos inmediatamente antes de Guardar y Cancelar.
|
|
|
|
Persona, recurso y sede utilizan SelectWithAction; los activos de origen y destino utilizan AssetSelect con diálogo de selección. Todos conservan alta rápida. Máximo un formulario hijo; cancelarlo conserva el padre. Guardar una referencia la conserva aunque después se cancele el acceso. Los tipos y estados son opciones fijas del proceso y no incorporan botón de alta.
|
|
|
|
Entorno actual muestra los accesos abiertos de la persona, con sus orígenes explícitos, separados de las configuraciones del perfil. Incluye accesos desde otros equipos o equipos personales de la misma persona. Gestionar abre un listado filtrado; el alta deja fija a la persona. Volver conserva el perfil.
|
|
|
|
Traducciones es/en y estados de carga, error y reintento. Se invalidan los avisos al modificar personas, autorizaciones, activos y recursos.
|
|
|
|
## DDD y persistencia
|
|
|
|
RemoteConnection es AggregateRoot; RemoteConnectionRevision es DomainEntity con identidad propia; RemoteConnectionValues encapsula referencias UniqueID, herramienta Name y opcionales Maybe. Create genera UUID v7; update conserva la identidad y compara semánticamente. Rehydrate reconstruye sin generar eventos.
|
|
|
|
Migraciones idempotentes para remote_connections y remote_connection_revisions, ejecutadas cuando ya existen activos y recursos. FK a compañía, persona, activo de origen/destino, recurso, sede y actor. El origen personal no tiene FK de inventario. Clave técnica única SHA-256 del recorrido abierto; se libera al cerrar. Posición de revisión única por acceso.
|
|
|
|
Escrituras en transacción con bloqueo de compañía. El mapper bidireccional valida UUID, referencias, historial, orden, transiciones, raíz y última revisión, y clave técnica. También se valida pertenencia a compañía al leer. Corrupción persistida falla sin exponer SQL.
|
|
|
|
GET /api/remote-connections/:companyId devuelve accesos, historial, efectividad de autorización y revisión. POST en esa ruta crea; POST /api/remote-connections/:companyId/:id/update modifica. Contratos Zod estrictos, sesión y protección de origen/CSRF. Los identificadores del actor nunca llegan del cliente.
|
|
|
|
## Validación
|
|
|
|
Diez pruebas nuevas de dominio/interfaz y cobertura HTTP con MariaDB exclusivamente en metis_desk_test: referencias, contratos estrictos, concurrencia, unicidad por herramienta, idempotencia, referencias fijas, estados, historial, actor, ámbito, autorización caducada/revocada, persona inactiva, activos retirados, recurso inactivo y fallo cerrado ante corrupción.
|
|
|
|
Suite completa: 142 pruebas correctas. Typecheck y build correctos. Lint y check mantienen respectivamente 32 y 90 errores previos, dos avisos y tres informativos; el bloque nuevo no añade incidencias.
|
|
|
|
Navegador: listado, formulario, cambio de origen personal, destinos, herramienta libre, altas rápidas y cancelación conservando el padre, ayuda inferior y gestión desde Entorno actual. No se guardan registros ficticios de desarrollo.
|
|
|
|
Los [procesos de cambio y salida](procesos-de-personas.md) incorporan revisiones de accesos remotos abiertos, incluidos los de equipos personales. Resolver el seguimiento no revoca la conexión ni altera el historial del acceso.
|