62 lines
6.1 KiB
Markdown
62 lines
6.1 KiB
Markdown
|
|
# Certificados del perfil
|
||
|
|
|
||
|
|
## Uso
|
||
|
|
|
||
|
|
Certificados del perfil está disponible en la compañía y desde cada perfil. Permite buscar por certificado, perfil, persona y equipo. Alta y edición se abren mediante modal, con ayuda inmediatamente antes de Guardar y Cancelar.
|
||
|
|
|
||
|
|
El certificado es un Resource de la compañía, creado con la plantilla de serie Certificado digital o una plantilla propia con uso Certificado digital. El nombre no determina el tipo. Titular, emisor, huella digital, finalidad y caducidad pertenecen al recurso común. Los campos siguen siendo opcionales por defecto.
|
||
|
|
|
||
|
|
La configuración enlaza un perfil y un recurso, ambos fijos. Estado y notas describen su preparación y retirada. Almacén o ubicación es texto opcional, hasta 255 caracteres: Windows del usuario, Firefox, tarjeta criptográfica o varias ubicaciones indicadas conjuntamente. No se exige conocer el almacén para registrar la necesidad. No hay campos para archivos, contraseñas, PIN o claves privadas.
|
||
|
|
|
||
|
|
Un certificado puede usarse en varios perfiles y un perfil puede necesitar varios certificados. Cada configuración conserva su propio historial. No puede haber dos configuraciones abiertas para la misma pareja.
|
||
|
|
|
||
|
|
## Necesidad, configuración y retirada
|
||
|
|
|
||
|
|
Pendiente de configurar documenta lo que la persona necesita; Configurado documenta su disponibilidad comprobada. Se conserva un único registro con historial, sin duplicar necesidades y configuraciones.
|
||
|
|
|
||
|
|
Estados:
|
||
|
|
- Pendiente → Configurado o Nunca configurado.
|
||
|
|
- Configurado → Pendiente de retirar.
|
||
|
|
- Pendiente de retirar → Retirado.
|
||
|
|
- Retirado y Nunca configurado son terminales e inmutables; se permite repetir una edición equivalente.
|
||
|
|
- Cerrar una pareja permite registrar otra configuración con nuevo UUID.
|
||
|
|
- Ubicación y notas pueden editarse en estados abiertos.
|
||
|
|
|
||
|
|
Crear o reconfigurar en estados pendiente/configurado exige perfil y persona activos, equipo no retirado y certificado activo y no caducado. Si una referencia deja de estar disponible, la configuración abierta muestra revisión. Se permite añadir notas y documentar la retirada aun con referencias inactivas o caducadas.
|
||
|
|
|
||
|
|
Esta configuración registra información para el técnico: no instala certificados, concede autorizaciones, elimina certificados del ordenador ni retira permisos reales.
|
||
|
|
|
||
|
|
## Caducidad
|
||
|
|
|
||
|
|
Se consulta el campo global de serie Caducidad mediante su UUID y clave estable, sin depender de su nombre. Funciona en la plantilla de serie y en plantillas personalizadas que reutilizan ese campo. No se interpretan otros campos de fecha como caducidad solo por llamarse igual.
|
||
|
|
|
||
|
|
Una fecha ausente no impide configurar. La fecha indicada es inclusiva: se considera caducado a partir del día siguiente, con día UTC como criterio común del servidor. La fecha y el indicador caducado se calculan al consultar la configuración y no se almacenan de nuevo. Cambiar la caducidad en el recurso actualiza todas sus configuraciones.
|
||
|
|
|
||
|
|
El listado muestra caducidad cuando se conoce y avisa si ha caducado. Una configuración cerrada conserva su historial sin marcar retirada pendiente. No se incorporan todavía notificaciones programadas ni gestión de renovaciones.
|
||
|
|
|
||
|
|
## Altas rápidas
|
||
|
|
|
||
|
|
Perfil y Certificado digital reutilizan SelectWithAction. Al acceder desde un perfil, este queda fijado. El alta rápida de certificado reutiliza ResourceEditor, preselecciona Certificado digital y limita las plantillas a su uso; el formulario hijo no abre un tercer modal. Cancelar el hijo conserva el formulario principal. Los recursos o perfiles guardados permanecen aunque se cancele el principal.
|
||
|
|
|
||
|
|
## Arquitectura y persistencia
|
||
|
|
|
||
|
|
CertificateConfiguration es AggregateRoot; CertificateConfigurationRevision es DomainEntity con UUID propio; CertificateConfigurationValues es Value Object inmutable con UniqueID y Maybe para ubicación/notas. Las nuevas identidades son UUID v7. Ediciones semánticamente iguales no añaden revisiones. Create, update y rehydrate mantienen responsabilidades separadas.
|
||
|
|
|
||
|
|
certificate_configurations y certificate_configuration_revisions se crean con migración explícita e idempotente, claves foráneas y clave nullable única de pareja abierta. Las escrituras bloquean la compañía y guardan raíz y revisiones nuevas en una transacción. La rehidratación comprueba identidad, pareja fija, estado inicial, transiciones, fechas, orden y coherencia de última revisión y clave abierta.
|
||
|
|
|
||
|
|
Companies consume IResourceInventoryService para identidad, uso, disponibilidad y caducidad. No importa los modelos ORM de Resources. Los campos y plantillas de recursos siguen separados de activos.
|
||
|
|
|
||
|
|
GET /api/certificate-configurations/:companyId lista configuraciones, revisión y caducidad calculada. POST en esa ruta crea; POST /api/certificate-configurations/:companyId/:id/update edita. Requieren sesión; origen y CSRF protegen escrituras; el actor procede de sesión. Entrada y respuesta se validan con schemas estrictos.
|
||
|
|
|
||
|
|
## Pruebas
|
||
|
|
|
||
|
|
Dominio: ubicación opcional, normalización y límites, entrada estricta, UUID, idempotencia, historial, destino fijo, duplicados, cierre terminal, ámbito y clasificación, inactividad, caducidad inclusiva, notas y retirada del caducado, rehidratación corrupta.
|
||
|
|
|
||
|
|
HTTP con MariaDB de test: plantillas de serie y propias, rechazo de aplicaciones como certificados, concurrencia, idempotencia, historial de ubicación, caducidad del recurso propagada a la configuración, aislamiento, origen/CSRF, corrupción de clave abierta, configuración compartida entre perfiles y archivo del perfil.
|
||
|
|
|
||
|
|
Interfaz: es/en, listado sin formularios, altas rápidas, ubicación opcional y ayuda inferior. La comprobación en navegador abre el modal y las altas rápidas, verifica cancelación y el perfil fijo, sin guardar datos ficticios en desarrollo.
|
||
|
|
|
||
|
|
La ficha [Entorno actual](entorno-actual.md) reúne las configuraciones del perfil.
|
||
|
|
|
||
|
|
Comprobaciones de esta entrega: 117 pruebas pasan, incluida una segunda ejecución completa con MariaDB de test. Typecheck y build pasan. Los 64 archivos de código y configuración de los cambios locales pasan Biome. Lint y check globales mantienen los errores anteriores de carpetas (32 y 90), sin errores nuevos en este bloque.
|