From 8308e3537ec3412849a9fb501b793ee2100c2f56 Mon Sep 17 00:00:00 2001 From: Milton Gonzalez Date: Thu, 21 May 2026 22:28:44 -0500 Subject: [PATCH] Relax signature preference validation for FirmaEC --- CHANGELOG.md | 6 +++- DEPLOY_ANDROID.md | 2 +- DEPLOY_WEB.md | 2 +- PRODUCCION.md | 2 +- VERSION | 2 +- android/app/build.gradle | 4 +-- backend/package.json | 2 +- backend/src/modules/users/users.service.js | 35 ++++++++-------------- frontend/package.json | 2 +- 9 files changed, 26 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef96eb2..b42045f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,14 @@ ## Versión actual -- Versión base: `1.2.17` +- Versión base: `1.2.18` ## Historial +### 1.2.18 - 2026-05-21 + +- Backend vuelve tolerante el guardado de preferencias de firma para aceptar clientes parciales o legados y evitar errores al guardar `FirmaEC`. + ### 1.2.17 - 2026-05-21 - Web y backend agregan el estilo de firma `FirmaEC`, con vista previa configurable y sello visible con QR de validación. diff --git a/DEPLOY_ANDROID.md b/DEPLOY_ANDROID.md index 22d0797..19a8807 100644 --- a/DEPLOY_ANDROID.md +++ b/DEPLOY_ANDROID.md @@ -2,7 +2,7 @@ ## Versión actual -- Base actual: `1.2.17` +- Base actual: `1.2.18` - Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION) - Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md) diff --git a/DEPLOY_WEB.md b/DEPLOY_WEB.md index cde0e3d..6ca3cf5 100644 --- a/DEPLOY_WEB.md +++ b/DEPLOY_WEB.md @@ -2,7 +2,7 @@ ## Versión actual -- Base actual: `1.2.17` +- Base actual: `1.2.18` - Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION) - Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md) diff --git a/PRODUCCION.md b/PRODUCCION.md index e358e9b..386f34e 100644 --- a/PRODUCCION.md +++ b/PRODUCCION.md @@ -2,7 +2,7 @@ ## Versión actual -- Base actual: `1.2.17` +- Base actual: `1.2.18` - Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION) - Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md) diff --git a/VERSION b/VERSION index b66183a..591bdbc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.17 +1.2.18 diff --git a/android/app/build.gradle b/android/app/build.gradle index a43e7e3..d1d6718 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -18,8 +18,8 @@ android { applicationId "net.linkedcorp.linkedsign" minSdk 26 targetSdk 35 - versionCode 10217 - versionName "1.2.17" + versionCode 10218 + versionName "1.2.18" buildConfigField "String", "API_BASE_URL", "\"${apiBaseUrl}\"" } diff --git a/backend/package.json b/backend/package.json index d05ec97..a78bf24 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "linkedsign-backend", - "version": "1.2.17", + "version": "1.2.18", "private": true, "description": "Initial backend for LinkedSign", "main": "src/server.js", diff --git a/backend/src/modules/users/users.service.js b/backend/src/modules/users/users.service.js index 45ecc99..8d035eb 100644 --- a/backend/src/modules/users/users.service.js +++ b/backend/src/modules/users/users.service.js @@ -4,41 +4,32 @@ const ALLOWED_SIGNATURE_STYLES = ['classic', 'qr', 'professional', 'firmaec']; const ALLOWED_QR_POSITIONS = ['left', 'right']; const ALLOWED_QR_BACKGROUNDS = ['transparent', 'soft']; const ALLOWED_QR_BORDERS = ['none', 'line']; +const LEGACY_SIGNATURE_STYLE_MAP = { + image: 'qr', +}; const getSignaturePreferences = async (userId) => { return usersRepository.getSignaturePreferences(userId); }; const updateSignaturePreferences = async (userId, { signatureStyle, qrPosition, qrBackground, qrBorder, signatureImageBase64 }) => { - if (!ALLOWED_SIGNATURE_STYLES.includes(signatureStyle)) { + const normalizedSignatureStyle = LEGACY_SIGNATURE_STYLE_MAP[String(signatureStyle || '').toLowerCase()] || signatureStyle; + if (!ALLOWED_SIGNATURE_STYLES.includes(normalizedSignatureStyle)) { const error = new Error('Invalid signature style.'); error.statusCode = 400; throw error; } - if (!ALLOWED_QR_POSITIONS.includes(qrPosition)) { - const error = new Error('Invalid QR position.'); - error.statusCode = 400; - throw error; - } - - if (!ALLOWED_QR_BACKGROUNDS.includes(qrBackground)) { - const error = new Error('Invalid QR background.'); - error.statusCode = 400; - throw error; - } - - if (!ALLOWED_QR_BORDERS.includes(qrBorder)) { - const error = new Error('Invalid QR border.'); - error.statusCode = 400; - throw error; - } + // Preferences should be resilient to stale clients or partially populated forms. + const resolvedQrPosition = ALLOWED_QR_POSITIONS.includes(qrPosition) ? qrPosition : 'left'; + const resolvedQrBackground = ALLOWED_QR_BACKGROUNDS.includes(qrBackground) ? qrBackground : 'transparent'; + const resolvedQrBorder = ALLOWED_QR_BORDERS.includes(qrBorder) ? qrBorder : 'none'; return usersRepository.setSignaturePreferences(userId, { - signatureStyle, - qrPosition, - qrBackground, - qrBorder, + signatureStyle: normalizedSignatureStyle, + qrPosition: resolvedQrPosition, + qrBackground: resolvedQrBackground, + qrBorder: resolvedQrBorder, signatureImageBase64: signatureImageBase64 || null, }); }; diff --git a/frontend/package.json b/frontend/package.json index bf17555..4db5e26 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "1.2.17", + "version": "1.2.18", "type": "module", "scripts": { "dev": "vite",