# LinkedSign Backend - Resumen Actual Resumen corto del estado actual del backend que usan la web y la app Android. ## Módulos activos - `auth` - `users` - `documents` - `certificates` - `signatures` - `mail` - `audit` - `health` ## Seguridad aplicada - `helmet` - `cors` restringido - rate limit en login - JWT access + refresh - contraseñas con `bcrypt` - validación fuerte de contraseña - validación de PDF - control de acceso por usuario autenticado - auditoría de login, documentos, certificados y firmas ## Autenticación - registro con correo + contraseña - validación del correo por enlace - reenvío automático del correo si el usuario intenta entrar sin validar - `GET /auth/me` - logout y refresh token - cambio de contraseña con confirmación por correo ## Documentos - subida de PDF original - listado - descarga - eliminación - cálculo de hash SHA-256 del documento Ruta de almacenamiento: ```text /storage/documentos/YYYY/MM/ ``` ## Certificados - subida de `.p12` / `.pfx` - lectura de sujeto, emisor y vigencia - detección de cantidad de certificados embebidos - indicador de cadena embebida - listado y eliminación Ruta de almacenamiento: ```text /backend/storage/certificates/users/{userId} ``` ## Firmas - firmado de PDF con certificado del usuario - estilos visuales: - `classic` - `qr` - `professional` - `image` - QR configurable: - izquierda / derecha - borde / sin borde - fondo suave / transparente - nombre del firmado: - `nombreOriginal_yyyymmddhhmm.pdf` - listado de documentos firmados - descarga del firmado - verificación pública por QR ## Verificación QR Cada firma puede generar: - `verificationCode` - `verificationUrl` El QR apunta a la verificación pública de LinkedSign y muestra: - estado de validez interna - firmante - emisor del certificado - documento - fecha de firma - razón y ubicación - hash de integridad ## Preferencias visuales Se guardan por usuario: - `signatureStyle` - `qrPosition` - `qrBackground` - `qrBorder` - `signatureImageBase64` Persistencia actual: ```text backend/storage/preferences/signature-styles.json ``` ## Auditoría Eventos almacenados en: ```text backend/logs/audit.log ``` Se registran, entre otros: - `USER_REGISTERED` - `LOGIN_SUCCESS` - `LOGIN_FAILED` - `VERIFICATION_EMAIL_RESENT` - `PASSWORD_CHANGE_REQUESTED` - `PASSWORD_CHANGED` - `DOCUMENT_UPLOAD` - `DOCUMENT_DELETE` - `CERTIFICATE_UPLOAD` - `CERTIFICATE_DELETE` - `DOCUMENT_SIGNED` ## Integración con Android La app móvil en [android/README.md](/home/mgonzalez/desarrollo/react/linkedsign/android/README.md): - usa esta misma API - comparte autenticación con la web - guarda sesión en el dispositivo - sincroniza documentos, certificados y firmados bajo petición del usuario