From 24a95e8852a75e0b60f2ecaaf63fbc4c1f02be1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 00:56:20 +0000 Subject: [PATCH 01/19] build(deps-dev): bump @babel/eslint-parser in /apps/OpenSignServer Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.26.5 to 7.26.8. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.26.8/eslint/babel-eslint-parser) --- updated-dependencies: - dependency-name: "@babel/eslint-parser" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 9 +++++---- apps/OpenSignServer/package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index 8c0672e8c0..f89eec75a2 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -41,7 +41,7 @@ "ws": "^8.18.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.26.5", + "@babel/eslint-parser": "^7.26.8", "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", @@ -5975,10 +5975,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz", - "integrity": "sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz", + "integrity": "sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 8c3b51102b..9246589625 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -51,7 +51,7 @@ }, "type": "module", "devDependencies": { - "@babel/eslint-parser": "^7.26.5", + "@babel/eslint-parser": "^7.26.8", "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", From 2f67ac7b0a862569d32f943d7284638664622732 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 07:21:32 +0000 Subject: [PATCH 02/19] build(deps): bump regex-parser from 2.3.0 to 2.3.1 in /apps/OpenSign Bumps [regex-parser](https://github.com/IonicaBizau/regex-parser.js) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/IonicaBizau/regex-parser.js/releases) - [Commits](https://github.com/IonicaBizau/regex-parser.js/compare/2.3.0...2.3.1) --- updated-dependencies: - dependency-name: regex-parser dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSign/package-lock.json | 9 +++++---- apps/OpenSign/package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index e799170565..4302a6fd58 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -58,7 +58,7 @@ "reactour": "^1.19.4", "redux": "^5.0.1", "redux-thunk": "^3.1.0", - "regex-parser": "^2.3.0", + "regex-parser": "^2.3.1", "serve": "^14.2.4", "styled-components": "^5.3.0", "web-vitals": "^4.2.4", @@ -24085,9 +24085,10 @@ } }, "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "license": "MIT" }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index 32251cfa33..9d890aa4e1 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -53,7 +53,7 @@ "reactour": "^1.19.4", "redux": "^5.0.1", "redux-thunk": "^3.1.0", - "regex-parser": "^2.3.0", + "regex-parser": "^2.3.1", "serve": "^14.2.4", "styled-components": "^5.3.0", "web-vitals": "^4.2.4", From 97642bf857e28f1d28fc22f51044bcc8f8a2063a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 07:21:34 +0000 Subject: [PATCH 03/19] build(deps-dev): bump webpack-cli from 5.1.4 to 6.0.1 in /apps/OpenSign Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 5.1.4 to 6.0.1. - [Release notes](https://github.com/webpack/webpack-cli/releases) - [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@5.1.4...webpack-cli@6.0.1) --- updated-dependencies: - dependency-name: webpack-cli dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- apps/OpenSign/package-lock.json | 106 +++++++++++++++++--------------- apps/OpenSign/package.json | 2 +- 2 files changed, 59 insertions(+), 49 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index e799170565..347caec251 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -88,7 +88,7 @@ "pretty-quick": "^4.0.0", "tailwindcss": "^3.4.17", "terser-webpack-plugin": "^5.3.11", - "webpack-cli": "^5.1.4" + "webpack-cli": "^6.0.1" }, "engines": { "node": "18 || 20 || 22" @@ -2391,12 +2391,13 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, "node_modules/@emotion/babel-plugin": { @@ -7429,42 +7430,45 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -9428,6 +9432,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -12610,6 +12615,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -14533,6 +14539,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -14774,6 +14781,7 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -25033,6 +25041,7 @@ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -27244,42 +27253,40 @@ } }, "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, + "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", - "commander": "^10.0.1", + "commander": "^12.1.0", "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", + "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" + "webpack-merge": "^6.0.1" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "5.x.x" + "webpack": "^5.82.0" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -27289,12 +27296,13 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/webpack-dev-middleware": { @@ -27436,17 +27444,18 @@ } }, "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/webpack-sources": { @@ -27748,7 +27757,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index 32251cfa33..cd0d51b414 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -118,7 +118,7 @@ "pretty-quick": "^4.0.0", "tailwindcss": "^3.4.17", "terser-webpack-plugin": "^5.3.11", - "webpack-cli": "^5.1.4" + "webpack-cli": "^6.0.1" }, "overrides": { "nth-check": "$nth-check", From 99c7a58d62d79b3897dfa0023be00a97abc524ea Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Fri, 21 Feb 2025 11:32:27 +0000 Subject: [PATCH 04/19] Merge pull request #336 from OpenSignLabs/staging style: correct logo aspect ratio in guest login --- apps/OpenSign/src/pages/GuestLogin.js | 18 +++++++++---- .../OpenSign/src/primitives/DownloadPdfZip.js | 25 +++++++++---------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/apps/OpenSign/src/pages/GuestLogin.js b/apps/OpenSign/src/pages/GuestLogin.js index 0ff06ff0dd..d5c6e0fbbf 100644 --- a/apps/OpenSign/src/pages/GuestLogin.js +++ b/apps/OpenSign/src/pages/GuestLogin.js @@ -65,7 +65,11 @@ function GuestLogin() { const handleServerUrl = async () => { setAppLogo(logo); - localStorage.clear(); + localStorage.clear(); // Clears everything + localStorage.setItem( + "appname", + "OpenSign™" + ); //save isGuestSigner true in local to handle login flow header in mobile view localStorage.setItem("isGuestSigner", true); saveLanguageInLocal(i18n); @@ -220,11 +224,15 @@ function GuestLogin() { {isLoading.isLoad ? ( ) : ( -
-
-
+
+
+
{appLogo && ( - logo + logo )}
{contactId ? ( diff --git a/apps/OpenSign/src/primitives/DownloadPdfZip.js b/apps/OpenSign/src/primitives/DownloadPdfZip.js index 21f9d6fd82..2c454316e2 100644 --- a/apps/OpenSign/src/primitives/DownloadPdfZip.js +++ b/apps/OpenSign/src/primitives/DownloadPdfZip.js @@ -65,19 +65,18 @@ function DownloadPdfZip(props) { throw new Error(`Failed to fetch certificate PDF: ${certificateUrl}`); } const pdf2Blob = await pdf2Response.blob(); - // Add files to ZIP - zip.file( - `${sanitizeFileName(pdfName)}_signed_by_${appName}.pdf`, - pdf1Blob - ); - zip.file(`Certificate_signed_by_${appName}.pdf`, pdf2Blob); - - // Generate the ZIP and trigger download - const zipBlob = await zip.generateAsync({ type: "blob" }); - saveAs( - zipBlob, - `${sanitizeFileName(pdfName)}_signed_by_${appName}.zip` - ); + // Add files to ZIP + zip.file( + `${sanitizeFileName(pdfName)}_signed_by_${appName}.pdf`, + pdf1Blob + ); + zip.file(`Certificate_signed_by_${appName}.pdf`, pdf2Blob); + // Generate the ZIP and trigger download + const zipBlob = await zip.generateAsync({ type: "blob" }); + saveAs( + zipBlob, + `${sanitizeFileName(pdfName)}_signed_by_${appName}.zip` + ); setSelectType(1); props.setIsDownloadModal(false); setIsDownloading(""); From 080d7c08dcc16661f88fe959dc0bfa8f4f59023b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 11:41:35 +0000 Subject: [PATCH 05/19] build(deps-dev): bump eslint in /apps/OpenSignServer Bumps [eslint](https://github.com/eslint/eslint) from 9.20.0 to 9.20.1. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.20.0...v9.20.1) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 8 ++++---- apps/OpenSignServer/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index f89eec75a2..b30c19c995 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.26.8", - "eslint": "^9.20.0", + "eslint": "^9.20.1", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", "nodemon": "^3.1.9", @@ -12733,9 +12733,9 @@ } }, "node_modules/eslint": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", - "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 9246589625..7f757d5a25 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -52,7 +52,7 @@ "type": "module", "devDependencies": { "@babel/eslint-parser": "^7.26.8", - "eslint": "^9.20.0", + "eslint": "^9.20.1", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", "nodemon": "^3.1.9", From d85ed954f150846240645dabd249ac81c81e0004 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Fri, 21 Feb 2025 12:40:33 +0000 Subject: [PATCH 06/19] Merge pull request #339 from OpenSignLabs/staging fix: remove logo from certificate for white labeled user --- apps/OpenSign/package-lock.json | 9 +++---- apps/OpenSign/package.json | 2 +- apps/OpenSign/src/pages/GuestLogin.js | 18 +++++++++---- .../OpenSign/src/primitives/DownloadPdfZip.js | 25 +++++++++---------- apps/OpenSignServer/Utils.js | 3 ++- .../parsefunction/pdf/GenerateCertificate.js | 18 +++++++------ apps/OpenSignServer/package-lock.json | 17 ++++++------- apps/OpenSignServer/package.json | 4 +-- 8 files changed, 52 insertions(+), 44 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index 4302a6fd58..e799170565 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -58,7 +58,7 @@ "reactour": "^1.19.4", "redux": "^5.0.1", "redux-thunk": "^3.1.0", - "regex-parser": "^2.3.1", + "regex-parser": "^2.3.0", "serve": "^14.2.4", "styled-components": "^5.3.0", "web-vitals": "^4.2.4", @@ -24085,10 +24085,9 @@ } }, "node_modules/regex-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", - "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", - "license": "MIT" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==" }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index 9d890aa4e1..32251cfa33 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -53,7 +53,7 @@ "reactour": "^1.19.4", "redux": "^5.0.1", "redux-thunk": "^3.1.0", - "regex-parser": "^2.3.1", + "regex-parser": "^2.3.0", "serve": "^14.2.4", "styled-components": "^5.3.0", "web-vitals": "^4.2.4", diff --git a/apps/OpenSign/src/pages/GuestLogin.js b/apps/OpenSign/src/pages/GuestLogin.js index 0ff06ff0dd..d5c6e0fbbf 100644 --- a/apps/OpenSign/src/pages/GuestLogin.js +++ b/apps/OpenSign/src/pages/GuestLogin.js @@ -65,7 +65,11 @@ function GuestLogin() { const handleServerUrl = async () => { setAppLogo(logo); - localStorage.clear(); + localStorage.clear(); // Clears everything + localStorage.setItem( + "appname", + "OpenSign™" + ); //save isGuestSigner true in local to handle login flow header in mobile view localStorage.setItem("isGuestSigner", true); saveLanguageInLocal(i18n); @@ -220,11 +224,15 @@ function GuestLogin() { {isLoading.isLoad ? ( ) : ( -
-
-
+
+
+
{appLogo && ( - logo + logo )}
{contactId ? ( diff --git a/apps/OpenSign/src/primitives/DownloadPdfZip.js b/apps/OpenSign/src/primitives/DownloadPdfZip.js index 21f9d6fd82..2c454316e2 100644 --- a/apps/OpenSign/src/primitives/DownloadPdfZip.js +++ b/apps/OpenSign/src/primitives/DownloadPdfZip.js @@ -65,19 +65,18 @@ function DownloadPdfZip(props) { throw new Error(`Failed to fetch certificate PDF: ${certificateUrl}`); } const pdf2Blob = await pdf2Response.blob(); - // Add files to ZIP - zip.file( - `${sanitizeFileName(pdfName)}_signed_by_${appName}.pdf`, - pdf1Blob - ); - zip.file(`Certificate_signed_by_${appName}.pdf`, pdf2Blob); - - // Generate the ZIP and trigger download - const zipBlob = await zip.generateAsync({ type: "blob" }); - saveAs( - zipBlob, - `${sanitizeFileName(pdfName)}_signed_by_${appName}.zip` - ); + // Add files to ZIP + zip.file( + `${sanitizeFileName(pdfName)}_signed_by_${appName}.pdf`, + pdf1Blob + ); + zip.file(`Certificate_signed_by_${appName}.pdf`, pdf2Blob); + // Generate the ZIP and trigger download + const zipBlob = await zip.generateAsync({ type: "blob" }); + saveAs( + zipBlob, + `${sanitizeFileName(pdfName)}_signed_by_${appName}.zip` + ); setSelectType(1); props.setIsDownloadModal(false); setIsDownloading(""); diff --git a/apps/OpenSignServer/Utils.js b/apps/OpenSignServer/Utils.js index 69caa53bcf..057082a138 100644 --- a/apps/OpenSignServer/Utils.js +++ b/apps/OpenSignServer/Utils.js @@ -5,7 +5,8 @@ import { PDFDocument } from 'pdf-lib'; dotenv.config(); export const cloudServerUrl = 'http://localhost:8080/app'; -export const appName = process.env.APP_NAME || 'OpenSign™'; +export const appName = + 'OpenSign™'; export function customAPIurl() { const url = new URL(cloudServerUrl); return url.pathname === '/api/app' ? url.origin + '/api' : url.origin; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/GenerateCertificate.js b/apps/OpenSignServer/cloud/parsefunction/pdf/GenerateCertificate.js index 400ad71481..40018b408b 100644 --- a/apps/OpenSignServer/cloud/parsefunction/pdf/GenerateCertificate.js +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/GenerateCertificate.js @@ -1,7 +1,9 @@ -import { PDFDocument, StandardFonts, rgb } from 'pdf-lib'; +import { PDFDocument, rgb } from 'pdf-lib'; import fs from 'node:fs'; import fontkit from '@pdf-lib/fontkit'; -import { formatTimeInTimezone } from '../../../Utils.js'; +import { + formatTimeInTimezone, +} from '../../../Utils.js'; export default async function GenerateCertificate(docDetails) { const timezone = docDetails?.ExtUserPtr?.Timezone || ''; @@ -73,12 +75,12 @@ export default async function GenerateCertificate(docDetails) { borderColor: borderColor, borderWidth: 1, }); - page.drawImage(pngImage, { - x: 30, - y: 790, - width: 100, - height: 25, - }); + page.drawImage(pngImage, { + x: 30, + y: 790, + width: 100, + height: 25, + }); page.drawText(generatedOn, { x: 320, diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index b30c19c995..8c0672e8c0 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -41,8 +41,8 @@ "ws": "^8.18.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.26.8", - "eslint": "^9.20.1", + "@babel/eslint-parser": "^7.26.5", + "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", "nodemon": "^3.1.9", @@ -5975,11 +5975,10 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz", - "integrity": "sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz", + "integrity": "sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ==", "dev": true, - "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -12733,9 +12732,9 @@ } }, "node_modules/eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", + "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 7f757d5a25..8c3b51102b 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -51,8 +51,8 @@ }, "type": "module", "devDependencies": { - "@babel/eslint-parser": "^7.26.8", - "eslint": "^9.20.1", + "@babel/eslint-parser": "^7.26.5", + "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", "nodemon": "^3.1.9", From f73844d7305b942931fdcf3e60626eed36681f58 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 00:08:02 +0000 Subject: [PATCH 07/19] build(deps-dev): bump @babel/eslint-parser in /apps/OpenSignServer Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.26.5 to 7.26.8. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.26.8/eslint/babel-eslint-parser) --- updated-dependencies: - dependency-name: "@babel/eslint-parser" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 9 +++++---- apps/OpenSignServer/package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index 8c0672e8c0..f89eec75a2 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -41,7 +41,7 @@ "ws": "^8.18.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.26.5", + "@babel/eslint-parser": "^7.26.8", "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", @@ -5975,10 +5975,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz", - "integrity": "sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz", + "integrity": "sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 8c3b51102b..9246589625 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -51,7 +51,7 @@ }, "type": "module", "devDependencies": { - "@babel/eslint-parser": "^7.26.5", + "@babel/eslint-parser": "^7.26.8", "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", From 5b943c19652e0057a7461cb0dd5b7064d8672cdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 00:52:19 +0000 Subject: [PATCH 08/19] build(deps): bump i18next-browser-languagedetector in /apps/OpenSign Bumps [i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector) from 8.0.2 to 8.0.4. - [Changelog](https://github.com/i18next/i18next-browser-languageDetector/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-browser-languageDetector/compare/v8.0.2...v8.0.4) --- updated-dependencies: - dependency-name: i18next-browser-languagedetector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSign/package-lock.json | 8 ++++---- apps/OpenSign/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index e799170565..e3e96b31bf 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -18,7 +18,7 @@ "css-minimizer-webpack-plugin": "^7.0.0", "file-saver": "^2.0.5", "i18next": "^23.16.8", - "i18next-browser-languagedetector": "^8.0.2", + "i18next-browser-languagedetector": "^8.0.4", "i18next-http-backend": "^3.0.1", "jszip": "^3.10.1", "jwt-decode": "^4.0.0", @@ -13792,9 +13792,9 @@ } }, "node_modules/i18next-browser-languagedetector": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.2.tgz", - "integrity": "sha512-shBvPmnIyZeD2VU5jVGIOWP7u9qNG3Lj7mpaiPFpbJ3LVfHZJvVzKR4v1Cb91wAOFpNw442N+LGPzHOHsten2g==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.4.tgz", + "integrity": "sha512-f3frU3pIxD50/Tz20zx9TD9HobKYg47fmAETb117GKGPrhwcSSPJDoCposXlVycVebQ9GQohC3Efbpq7/nnJ5w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index 32251cfa33..2b9c70dd18 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -13,7 +13,7 @@ "css-minimizer-webpack-plugin": "^7.0.0", "file-saver": "^2.0.5", "i18next": "^23.16.8", - "i18next-browser-languagedetector": "^8.0.2", + "i18next-browser-languagedetector": "^8.0.4", "i18next-http-backend": "^3.0.1", "jszip": "^3.10.1", "jwt-decode": "^4.0.0", From a6a0325d4ba4c1b0d1ac400759ccb86f10a693de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 08:47:11 +0000 Subject: [PATCH 09/19] build(deps): bump ws from 8.18.0 to 8.18.1 in /apps/OpenSignServer Bumps [ws](https://github.com/websockets/ws) from 8.18.0 to 8.18.1. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.18.0...8.18.1) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 9 +++++---- apps/OpenSignServer/package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index f89eec75a2..a6399fd171 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -38,7 +38,7 @@ "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", "posthog-node": "^4.5.0", - "ws": "^8.18.0" + "ws": "^8.18.1" }, "devDependencies": { "@babel/eslint-parser": "^7.26.8", @@ -18948,9 +18948,10 @@ "dev": true }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 9246589625..cfbe06ae15 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -47,7 +47,7 @@ "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", "posthog-node": "^4.5.0", - "ws": "^8.18.0" + "ws": "^8.18.1" }, "type": "module", "devDependencies": { From 1899acfffc67a3945872cb4c09b8b5e4cf3e730f Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 24 Feb 2025 09:12:24 +0000 Subject: [PATCH 10/19] Merge pull request #343 from OpenSignLabs/staging fix: selected date resets to the current date when navigating between document pages. --- apps/OpenSign/package-lock.json | 114 ++++++++---------- apps/OpenSign/package.json | 4 +- .../src/components/pdf/Placeholder.js | 77 +++++------- apps/OpenSignServer/package-lock.json | 18 ++- apps/OpenSignServer/package.json | 4 +- 5 files changed, 94 insertions(+), 123 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index b0028c9923..e799170565 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -18,7 +18,7 @@ "css-minimizer-webpack-plugin": "^7.0.0", "file-saver": "^2.0.5", "i18next": "^23.16.8", - "i18next-browser-languagedetector": "^8.0.4", + "i18next-browser-languagedetector": "^8.0.2", "i18next-http-backend": "^3.0.1", "jszip": "^3.10.1", "jwt-decode": "^4.0.0", @@ -88,7 +88,7 @@ "pretty-quick": "^4.0.0", "tailwindcss": "^3.4.17", "terser-webpack-plugin": "^5.3.11", - "webpack-cli": "^6.0.1" + "webpack-cli": "^5.1.4" }, "engines": { "node": "18 || 20 || 22" @@ -2391,13 +2391,12 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=14.17.0" + "node": ">=10.0.0" } }, "node_modules/@emotion/babel-plugin": { @@ -7430,45 +7429,42 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", - "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=18.12.0" + "node": ">=14.15.0" }, "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", - "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "license": "MIT", "engines": { - "node": ">=18.12.0" + "node": ">=14.15.0" }, "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", - "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=18.12.0" + "node": ">=14.15.0" }, "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -9432,7 +9428,6 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -12615,7 +12610,6 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -13798,9 +13792,9 @@ } }, "node_modules/i18next-browser-languagedetector": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.4.tgz", - "integrity": "sha512-f3frU3pIxD50/Tz20zx9TD9HobKYg47fmAETb117GKGPrhwcSSPJDoCposXlVycVebQ9GQohC3Efbpq7/nnJ5w==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.2.tgz", + "integrity": "sha512-shBvPmnIyZeD2VU5jVGIOWP7u9qNG3Lj7mpaiPFpbJ3LVfHZJvVzKR4v1Cb91wAOFpNw442N+LGPzHOHsten2g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" @@ -14539,7 +14533,6 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -14781,7 +14774,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -25041,7 +25033,6 @@ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -27253,40 +27244,42 @@ } }, "node_modules/webpack-cli": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", - "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, - "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.6.1", - "@webpack-cli/configtest": "^3.0.1", - "@webpack-cli/info": "^3.0.1", - "@webpack-cli/serve": "^3.0.1", + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^12.1.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", - "envinfo": "^7.14.0", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", - "webpack-merge": "^6.0.1" + "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=18.12.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^5.82.0" + "webpack": "5.x.x" }, "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, "webpack-bundle-analyzer": { "optional": true }, @@ -27296,13 +27289,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, - "license": "MIT", "engines": { - "node": ">=18" + "node": ">=14" } }, "node_modules/webpack-dev-middleware": { @@ -27444,18 +27436,17 @@ } }, "node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.1" + "wildcard": "^2.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10.0.0" } }, "node_modules/webpack-sources": { @@ -27757,8 +27748,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/word-wrap": { "version": "1.2.5", diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index a9b8481b65..32251cfa33 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -13,7 +13,7 @@ "css-minimizer-webpack-plugin": "^7.0.0", "file-saver": "^2.0.5", "i18next": "^23.16.8", - "i18next-browser-languagedetector": "^8.0.4", + "i18next-browser-languagedetector": "^8.0.2", "i18next-http-backend": "^3.0.1", "jszip": "^3.10.1", "jwt-decode": "^4.0.0", @@ -118,7 +118,7 @@ "pretty-quick": "^4.0.0", "tailwindcss": "^3.4.17", "terser-webpack-plugin": "^5.3.11", - "webpack-cli": "^6.0.1" + "webpack-cli": "^5.1.4" }, "overrides": { "nth-check": "$nth-check", diff --git a/apps/OpenSign/src/components/pdf/Placeholder.js b/apps/OpenSign/src/components/pdf/Placeholder.js index a8da8d33bf..68e125cb94 100644 --- a/apps/OpenSign/src/components/pdf/Placeholder.js +++ b/apps/OpenSign/src/components/pdf/Placeholder.js @@ -74,25 +74,22 @@ const changeDateToMomentFormat = (format) => { return "L"; } }; - -//function to get default date -const getDefaultdate = (selectedDate, format = "dd-MM-yyyy") => { +//function to get default format +const getDefaultFormat = (dateFormat) => dateFormat || "MM/dd/yyyy"; +//function to convert formated date to new Date() format +const getDefaultDate = (dateStr, format) => { + //get valid date format for moment to convert formated date to new Date() format + const formats = changeDateToMomentFormat(format); + const parsedDate = moment(dateStr, formats); let date; - if (format && format === "dd-MM-yyyy") { - const newdate = selectedDate - ? selectedDate - : moment(new Date()).format(changeDateToMomentFormat(format)); - const [day, month, year] = newdate.split("-"); - date = new Date(`${year}-${month}-${day}`); + if (parsedDate.isValid()) { + date = new Date(parsedDate.toISOString()); + return date; } else { - date = new Date(selectedDate); + date = new Date(); + return date; } - const value = date; - return value; }; -//function to get default format -const getDefaultFormat = (dateFormat) => dateFormat || "MM/dd/yyyy"; - function Placeholder(props) { //'isTouchDevice' is used to detect whether a device has a touchscreen or is mouse-based const isTouchDevice = navigator.maxTouchPoints > 0; @@ -104,28 +101,16 @@ function Placeholder(props) { const holdTimeout = useRef(null); const startTime = useRef(null); // Track when the user starts holdings const [isDisableDragging, setIsDisableDragging] = useState(true); - const [selectDate, setSelectDate] = useState({ - date: - props.pos.type === "date" - ? moment( - getDefaultdate( - props?.pos?.options?.response, - props.pos?.options?.validation?.format - ).getTime() - ).format( - changeDateToMomentFormat(props.pos?.options?.validation?.format) - ) - : "", - format: - props.pos.type === "date" - ? getDefaultFormat(props.pos?.options?.validation?.format) - : "" - }); + const [selectDate, setSelectDate] = useState({}); const [dateFormat, setDateFormat] = useState([]); const [clickonWidget, setClickonWidget] = useState({}); const [startDate, setStartDate] = useState( - props.pos.type === "date" && - getDefaultdate(new Date(), props.pos?.options?.validation?.format) + props?.pos?.options?.response + ? getDefaultDate( + props?.pos?.options?.response, + props.pos?.options?.validation?.format + ) + : new Date() ); const [getCheckboxRenderWidth, setGetCheckboxRenderWidth] = useState({ width: null, @@ -164,7 +149,6 @@ function Placeholder(props) { return () => clearTimeout(timer); }, [props.pos]); - useEffect(() => { const onOutsideClick = () => { if (!isDraggingEnabled) { @@ -476,7 +460,7 @@ function Placeholder(props) { const isDateChange = true; const dateObj = { date: startDate, - format: selectDate.format + format: getDefaultFormat(props.pos?.options?.validation?.format) }; handleSaveDate(dateObj, isDateChange); //function to save date and format in local array } @@ -485,19 +469,18 @@ function Placeholder(props) { //function to save date and format on local array onchange date and onclick format const handleSaveDate = (data, isDateChange) => { let updateDate = data.date; - //check if date change by user - if (isDateChange) { - //`changeDateToMomentFormat` is used to convert date as per required to moment package - updateDate = moment(data.date).format( - changeDateToMomentFormat(data.format) + let date; + if (data?.format === "dd-MM-yyyy") { + date = isDateChange + ? moment(updateDate).format(changeDateToMomentFormat(data.format)) + : updateDate; + } else { + //using moment package is used to change date as per the format provided in selectDate obj e.g. - MM/dd/yyyy -> 03/12/2024 + const newDate = new Date(updateDate); + date = moment(newDate.getTime()).format( + changeDateToMomentFormat(data?.format) ); } - //using moment package is used to change date as per the format provided in selectDate obj e.g. - MM/dd/yyyy -> 03/12/2024 - //`getDefaultdate` is used to convert update date in new Date() format - const date = moment( - getDefaultdate(updateDate, data?.format).getTime() - ).format(changeDateToMomentFormat(data?.format)); - //`onChangeInput` is used to save data related to date in a placeholder field onChangeInput( date, diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index a6399fd171..8c0672e8c0 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -38,10 +38,10 @@ "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", "posthog-node": "^4.5.0", - "ws": "^8.18.1" + "ws": "^8.18.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.26.8", + "@babel/eslint-parser": "^7.26.5", "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", @@ -5975,11 +5975,10 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz", - "integrity": "sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz", + "integrity": "sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ==", "dev": true, - "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -18948,10 +18947,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "license": "MIT", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index cfbe06ae15..8c3b51102b 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -47,11 +47,11 @@ "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", "posthog-node": "^4.5.0", - "ws": "^8.18.1" + "ws": "^8.18.0" }, "type": "module", "devDependencies": { - "@babel/eslint-parser": "^7.26.8", + "@babel/eslint-parser": "^7.26.5", "eslint": "^9.20.0", "jasmine": "^5.6.0", "mongodb-runner": "^5.7.1", From abfc3f32f26740025ac8af5e9c2ec24a24e5f1fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 00:41:39 +0000 Subject: [PATCH 11/19] build(deps): bump mongodb from 6.13.0 to 6.14.0 in /apps/OpenSignServer Bumps [mongodb](https://github.com/mongodb/node-mongodb-native) from 6.13.0 to 6.14.0. - [Release notes](https://github.com/mongodb/node-mongodb-native/releases) - [Changelog](https://github.com/mongodb/node-mongodb-native/blob/main/HISTORY.md) - [Commits](https://github.com/mongodb/node-mongodb-native/compare/v6.13.0...v6.14.0) --- updated-dependencies: - dependency-name: mongodb dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 17 +++++++++-------- apps/OpenSignServer/package.json | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index 8c0672e8c0..e3568493b2 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -27,7 +27,7 @@ "generate-api-key": "^1.0.2", "googleapis": "^144.0.0", "mailgun.js": "^11.1.0", - "mongodb": "^6.13.0", + "mongodb": "^6.14.0", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "node-forge": "^1.3.1", @@ -11739,9 +11739,10 @@ } }, "node_modules/bson": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", - "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", + "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", + "license": "Apache-2.0", "engines": { "node": ">=16.20.1" } @@ -15433,13 +15434,13 @@ } }, "node_modules/mongodb": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", - "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.0.tgz", + "integrity": "sha512-AlM6alTx98vcnk/jMMmoYuBrm4qpe1/VrbwvL2SXEHjdtJ1ZbVZmrpyjUx9mqS94e9HcemzpLn+CxzhmT7b0uw==", "license": "Apache-2.0", "dependencies": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.1", + "bson": "^6.10.3", "mongodb-connection-string-url": "^3.0.0" }, "engines": { diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 8c3b51102b..7a9031e00f 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -36,7 +36,7 @@ "generate-api-key": "^1.0.2", "googleapis": "^144.0.0", "mailgun.js": "^11.1.0", - "mongodb": "^6.13.0", + "mongodb": "^6.14.0", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "node-forge": "^1.3.1", From 2484c674066f48cac3ddfa86c2082d74cbee6e8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 00:42:08 +0000 Subject: [PATCH 12/19] build(deps): bump posthog-node in /apps/OpenSignServer Bumps [posthog-node](https://github.com/PostHog/posthog-js-lite/tree/HEAD/posthog-node) from 4.5.0 to 4.8.1. - [Release notes](https://github.com/PostHog/posthog-js-lite/releases) - [Changelog](https://github.com/PostHog/posthog-js-lite/blob/main/posthog-node/CHANGELOG.md) - [Commits](https://github.com/PostHog/posthog-js-lite/commits/posthog-node-v4.8.1/posthog-node) --- updated-dependencies: - dependency-name: posthog-node dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 8 ++++---- apps/OpenSignServer/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index 8c0672e8c0..699494ad0a 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -37,7 +37,7 @@ "parse-server": "^7.4.0", "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", - "posthog-node": "^4.5.0", + "posthog-node": "^4.8.1", "ws": "^8.18.0" }, "devDependencies": { @@ -16905,9 +16905,9 @@ } }, "node_modules/posthog-node": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-4.5.0.tgz", - "integrity": "sha512-h1WTHYvgOZ7kBGH0XfKVOVsSyFgCEbgzC2RIw7fetsW6RrSvxPYcaycKUDfqa5EGbvU0SYLbqAeeqNZjPDaznA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-4.8.1.tgz", + "integrity": "sha512-ApMEC1+DbctP/88+VhaCl8SRKpIoReibMf7Mb3rxw3yMthr1rKaM4opbHdZJ0buLhwS5zX8B2ckqLjpwpSjRPg==", "license": "MIT", "dependencies": { "axios": "^1.7.4" diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 8c3b51102b..748905fe73 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -46,7 +46,7 @@ "parse-server": "^7.4.0", "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", - "posthog-node": "^4.5.0", + "posthog-node": "^4.8.1", "ws": "^8.18.0" }, "type": "module", From 1b7f07a2c4bdaac518585dba130c22688f21bbaa Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 3 Mar 2025 17:57:33 +0000 Subject: [PATCH 13/19] Merge pull request #349 from OpenSignLabs/mismatch_attach feat: restrict emails --- .../public/locales/de/translation.json | 3 ++- .../public/locales/en/translation.json | 3 ++- .../public/locales/es/translation.json | 3 ++- .../public/locales/fr/translation.json | 3 ++- .../public/locales/it/translation.json | 3 ++- .../src/components/pdf/EmailComponent.js | 9 +++++++ apps/OpenSign/src/pages/PlaceHolderSign.js | 5 ++++ .../src/primitives/GetReportDisplay.js | 6 +++++ .../parsefunction/sendMailGmailProvider.js | 17 ++++++++++--- .../cloud/parsefunction/sendMailv3.js | 25 ++++++++++++++++++- 10 files changed, 68 insertions(+), 9 deletions(-) diff --git a/apps/OpenSign/public/locales/de/translation.json b/apps/OpenSign/public/locales/de/translation.json index c9c7f6397f..d7bb44fe27 100644 --- a/apps/OpenSign/public/locales/de/translation.json +++ b/apps/OpenSign/public/locales/de/translation.json @@ -847,5 +847,6 @@ "agreement-note": "Hinweis: Durch Ihre Zustimmung unterzeichnen Sie das Dokument nicht sofort. Sie können das Dokument nur elektronisch einsehen. Sie haben die Möglichkeit, es vollständig zu lesen und anschließend zu entscheiden, ob Sie es unterzeichnen möchten.", "draft-template-info-p1": "Um Ihre Vorlage öffentlich zu machen, muss sie entweder eine einzelne Rolle enthalten oder, wenn sie mehrere Rollen umfasst, müssen alle zusätzlichen Rollen bereits den Unterzeichnern zugewiesen sein. Die nicht zugewiesene öffentliche Rolle muss leer bleiben und an erster Stelle stehen.", "visit-below-link": "Besuchen Sie den untenstehenden Link, um mehr zu erfahren -", - "storage-help": "Durch die Aktivierung von BYOC können Sie Ihren eigenen S3-Speicher verbinden, sodass Ihre Dateien vollständig unter Ihrer Kontrolle bleiben und keine externen Kopien gespeichert werden. Wenn Ihnen Datenautonomie wichtig ist, erwägen Sie ein Upgrade auf Teams, um diese Funktion freizuschalten." + "storage-help": "Durch die Aktivierung von BYOC können Sie Ihren eigenen S3-Speicher verbinden, sodass Ihre Dateien vollständig unter Ihrer Kontrolle bleiben und keine externen Kopien gespeichert werden. Wenn Ihnen Datenautonomie wichtig ist, erwägen Sie ein Upgrade auf Teams, um diese Funktion freizuschalten.", + "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." } diff --git a/apps/OpenSign/public/locales/en/translation.json b/apps/OpenSign/public/locales/en/translation.json index 3c31ea9d23..3044449a9d 100644 --- a/apps/OpenSign/public/locales/en/translation.json +++ b/apps/OpenSign/public/locales/en/translation.json @@ -848,5 +848,6 @@ "agreement-note": "Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.", "draft-template-info-p1": "To make your template public, it must either contain a single role, or, if it includes multiple roles, all additional roles must already be assigned to signers. The unassigned public role should remain empty and must be placed in the first position.", "visit-below-link": "Visit below link to know more -", - "storage-help": "Enabling BYOC lets you connect your own S3 storage so your files remain entirely under your control—no external copies retained. If data autonomy matters to you, consider upgrading to Teams to unlock this feature." + "storage-help": "Enabling BYOC lets you connect your own S3 storage so your files remain entirely under your control—no external copies retained. If data autonomy matters to you, consider upgrading to Teams to unlock this feature.", + "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." } diff --git a/apps/OpenSign/public/locales/es/translation.json b/apps/OpenSign/public/locales/es/translation.json index 2037853aa7..8a891f28ee 100644 --- a/apps/OpenSign/public/locales/es/translation.json +++ b/apps/OpenSign/public/locales/es/translation.json @@ -849,5 +849,6 @@ "draft-template-info-p1": "Para hacer que tu plantilla sea pública, debe contener un único rol o, si incluye múltiples roles, todos los roles adicionales deben estar ya asignados a firmantes. El rol público no asignado debe permanecer vacío y debe estar en la primera posición.", "visit-below-link": "Visita el siguiente enlace para saber más -", "upgrade-to-team-plan": "Actualizar a team plan", - "storage-help": "Habilitar BYOC te permite conectar tu propio almacenamiento S3 para que tus archivos permanezcan completamente bajo tu control, sin copias externas retenidas. Si la autonomía de los datos es importante para ti, considera actualizar a Teams para desbloquear esta función." + "storage-help": "Habilitar BYOC te permite conectar tu propio almacenamiento S3 para que tus archivos permanezcan completamente bajo tu control, sin copias externas retenidas. Si la autonomía de los datos es importante para ti, considera actualizar a Teams para desbloquear esta función.", + "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." } diff --git a/apps/OpenSign/public/locales/fr/translation.json b/apps/OpenSign/public/locales/fr/translation.json index 22ce1eda08..13d302b684 100644 --- a/apps/OpenSign/public/locales/fr/translation.json +++ b/apps/OpenSign/public/locales/fr/translation.json @@ -846,5 +846,6 @@ "agreement-note": "Remarque : Accepter cela ne signifie pas que vous signez immédiatement le document. Cela vous permet uniquement de consulter le document électroniquement. Vous aurez l'opportunité de le lire entièrement et de décider ensuite si vous souhaitez le signer.", "draft-template-info-p1": "Pour rendre votre modèle public, il doit contenir un seul rôle ou, s'il inclut plusieurs rôles, tous les rôles supplémentaires doivent déjà être attribués aux signataires. Le rôle public non attribué doit rester vide et être placé en première position.", "visit-below-link": "Visitez le lien ci-dessous pour en savoir plus -", - "storage-help": "Activer BYOC vous permet de connecter votre propre stockage S3 afin que vos fichiers restent entièrement sous votre contrôle, sans copie externe conservée. Si l'autonomie des données est importante pour vous, envisagez de passer à l'offre Teams pour débloquer cette fonctionnalité." + "storage-help": "Activer BYOC vous permet de connecter votre propre stockage S3 afin que vos fichiers restent entièrement sous votre contrôle, sans copie externe conservée. Si l'autonomie des données est importante pour vous, envisagez de passer à l'offre Teams pour débloquer cette fonctionnalité.", + "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." } diff --git a/apps/OpenSign/public/locales/it/translation.json b/apps/OpenSign/public/locales/it/translation.json index d30629ff96..e7276d5c2e 100644 --- a/apps/OpenSign/public/locales/it/translation.json +++ b/apps/OpenSign/public/locales/it/translation.json @@ -847,5 +847,6 @@ "agreement-note": "Nota: Accettare questo non significa che stai firmando immediatamente il documento. Questo ti consente solo di esaminare il documento elettronicamente. Avrai l'opportunità di leggerlo per intero e decidere successivamente se firmarlo.", "draft-template-info-p1": "Per rendere il tuo modello pubblico, deve contenere un solo ruolo oppure, se include più ruoli, tutti i ruoli aggiuntivi devono essere già assegnati ai firmatari. Il ruolo pubblico non assegnato deve rimanere vuoto e deve essere posizionato per primo.", "visit-below-link": "Visita il link qui sotto per saperne di più -", - "storage-help": "Abilitare BYOC ti consente di collegare il tuo archivio S3 in modo che i tuoi file rimangano completamente sotto il tuo controllo, senza copie esterne conservate. Se l'autonomia dei dati è importante per te, considera l'upgrade a Teams per sbloccare questa funzionalità." + "storage-help": "Abilitare BYOC ti consente di collegare il tuo archivio S3 in modo che i tuoi file rimangano completamente sotto il tuo controllo, senza copie esterne conservate. Se l'autonomia dei dati è importante per te, considera l'upgrade a Teams per sbloccare questa funzionalità.", + "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." } diff --git a/apps/OpenSign/src/components/pdf/EmailComponent.js b/apps/OpenSign/src/components/pdf/EmailComponent.js index b0c5ee9cac..2d94c5e3b5 100644 --- a/apps/OpenSign/src/components/pdf/EmailComponent.js +++ b/apps/OpenSign/src/components/pdf/EmailComponent.js @@ -103,6 +103,15 @@ function EmailComponent({ setEmailList([]); }, 1500); setIsLoading(false); + } else if (sendMail?.data?.result?.status === "daily-quota-reached") { + setIsLoading(false); + setIsEmail(false); + setIsAlert({ + isShow: true, + alertMessage: t("daily-quota-reached") + }); + setEmailValue(""); + setEmailList([]); } else { setIsLoading(false); setIsEmail(false); diff --git a/apps/OpenSign/src/pages/PlaceHolderSign.js b/apps/OpenSign/src/pages/PlaceHolderSign.js index be66e98cd0..855c5bb37b 100644 --- a/apps/OpenSign/src/pages/PlaceHolderSign.js +++ b/apps/OpenSign/src/pages/PlaceHolderSign.js @@ -1311,6 +1311,11 @@ function PlaceHolderSign() { setIsMailSend(true); setIsLoading({ isLoad: false }); setIsUiLoading(false); + } else if (sendMail?.data?.result?.status === "daily-quota-reached") { + setMailStatus("daily-quota-reached"); + setIsSend(true); + setIsMailSend(true); + setIsUiLoading(false); } else if (sendMail?.data?.result?.status === "quota-reached") { setMailStatus("quotareached"); setIsSend(true); diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index 1bf7e10a6d..97ca23f924 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -806,6 +806,12 @@ const ReportTable = (props) => { setIsAlert(true); setAlertMsg({ type: "success", message: t("mail-sent-alert") }); setIsResendMail({}); + } else if (res?.data?.result?.status === "daily-quota-reached") { + setIsAlert(true); + setAlertMsg({ + type: "danger", + message: t("daily-quota-reached") + }); } else { setIsAlert(true); setAlertMsg({ diff --git a/apps/OpenSignServer/cloud/parsefunction/sendMailGmailProvider.js b/apps/OpenSignServer/cloud/parsefunction/sendMailGmailProvider.js index c639454406..b02905d9c2 100644 --- a/apps/OpenSignServer/cloud/parsefunction/sendMailGmailProvider.js +++ b/apps/OpenSignServer/cloud/parsefunction/sendMailGmailProvider.js @@ -35,7 +35,8 @@ const makeEmail = async ( bcc, filename, certificatePath, - replyto + replyto, + testPdf ) => { const publicUrl = new URL(process.env.SERVER_URL); const htmlContent = html; @@ -46,7 +47,7 @@ const makeEmail = async ( let str; if (url) { let attachments; - let Pdf = fs.createWriteStream('test.pdf'); + let Pdf = fs.createWriteStream(testPdf); const writeToLocalDisk = () => { return new Promise((resolve, reject) => { const isSecure = @@ -161,6 +162,8 @@ export default async function sendMailGmailProvider(_extRes, template) { // Construct email message const from = sender || _extRes.Email || 'me'; const to = receiver; + const randomNumber = Math.floor(Math.random() * 5000); + const testPdf = `test_${randomNumber}.pdf`; const email = await makeEmail( to, from, @@ -171,7 +174,8 @@ export default async function sendMailGmailProvider(_extRes, template) { bcc, filename, certificatePath, - replyto + replyto, + testPdf ); // Update Gmail client with new access token const newGmail = createGmailClient(access_token); @@ -189,6 +193,13 @@ export default async function sendMailGmailProvider(_extRes, template) { console.log('Err in unlink certificate sendmailgmail provider'); } } + if (fs.existsSync(testPdf)) { + try { + fs.unlinkSync(testPdf); + } catch (err) { + console.log('Err in unlink pdf sendmailv3'); + } + } return { code: 200, message: 'Email sent successfully' }; } catch (error) { console.error('Error sending email:', error); diff --git a/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js b/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js index bcca7d8269..5762fbb130 100644 --- a/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js +++ b/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js @@ -29,7 +29,9 @@ async function sendMailProvider(req, plan, monthchange) { } } if (req.params.url) { - let Pdf = fs.createWriteStream('test.pdf'); + const randomNumber = Math.floor(Math.random() * 5000); + const testPdf = `test_${randomNumber}.pdf`; + let Pdf = fs.createWriteStream(testPdf); const writeToLocalDisk = () => { return new Promise((resolve, reject) => { const isSecure = @@ -129,6 +131,13 @@ async function sendMailProvider(req, plan, monthchange) { console.log('Err in unlink certificate sendmailv3'); } } + if (fs.existsSync(testPdf)) { + try { + fs.unlinkSync(testPdf); + } catch (err) { + console.log('Err in unlink pdf sendmailv3'); + } + } return { status: 'success' }; } } else { @@ -146,6 +155,13 @@ async function sendMailProvider(req, plan, monthchange) { console.log('Err in unlink certificate sendmailv3'); } } + if (fs.existsSync(testPdf)) { + try { + fs.unlinkSync(testPdf); + } catch (err) { + console.log('Err in unlink pdf sendmailv3'); + } + } return { status: 'success' }; } } else { @@ -156,6 +172,13 @@ async function sendMailProvider(req, plan, monthchange) { console.log('Err in unlink certificate sendmailv3'); } } + if (fs.existsSync(testPdf)) { + try { + fs.unlinkSync(testPdf); + } catch (err) { + console.log('Err in unlink pdf sendmailv3'); + } + } return { status: 'error' }; } } From ddb63d81a77bf6aca08d2693ae9ed42320bb6c9a Mon Sep 17 00:00:00 2001 From: Rob Fuller <679319+mubix@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:04:43 -0500 Subject: [PATCH 14/19] fix install doc --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ac6c2e7e67..a51aad5fac 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ Welcome to OpenSign, the premier open source docusign alternative - document e-s The simplest way to install OpenSign on your own server is using official docker images by running the following command - ``` -export HOST_URL=https://opensign.yourdomain.com && curl --remote-name-all https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/docker-compose.yml https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/Caddyfile https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/.env.local_dev && mv .env.local_dev .env.prod && docker compose up --force-recreate +export HOST_URL=https://opensign.yourdomain.com && curl --remote-name-all https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/docker-compose.yml https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/Caddyfile https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/.env.local_dev && mv .env.local_dev .env.prod && docker compose up --force-recreate ``` Make sure that you have `Docker` and `git` installed before you run this command - From d0dd571478eced77ae3ca9f984a656b02a143171 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Tue, 4 Mar 2025 06:02:50 +0000 Subject: [PATCH 15/19] Merge pull request #356 from OpenSignLabs/mismatch_attach fix: correct condition --- .../cloud/parsefunction/getUserDetails.js | 2 ++ .../cloud/parsefunction/getUserListByOrg.js | 2 ++ .../cloud/parsefunction/sendMailv3.js | 3 +-- apps/OpenSignServer/package-lock.json | 25 +++++++++---------- apps/OpenSignServer/package.json | 4 +-- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js index 6e1127e7e9..df36c5b017 100644 --- a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js +++ b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js @@ -17,6 +17,8 @@ async function getUserDetails(request) { userQuery.exclude('TenantId.FileAdapters'); userQuery.exclude('google_refresh_token'); userQuery.exclude('TenantId.PfxFile'); + userQuery.exclude('DailyEmailReset'); + userQuery.exclude('DailyEmailCount'); if (userId) { userQuery.equalTo('CreatedBy', { __type: 'Pointer', className: '_User', objectId: userId }); } diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js b/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js index ffb173a6cf..74b8730bbb 100644 --- a/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js +++ b/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js @@ -13,6 +13,8 @@ export default async function getUserListByOrg(req) { extUser.equalTo('OrganizationId', orgPtr); extUser.include('TeamIds'); extUser.descending('createdAt'); + extUser.exclude('DailyEmailReset'); + extUser.exclude('DailyEmailCount'); const userRes = await extUser.find({ useMasterKey: true }); if (userRes.length > 0) { const _userRes = JSON.parse(JSON.stringify(userRes)); diff --git a/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js b/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js index 5762fbb130..7c1481b76c 100644 --- a/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js +++ b/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js @@ -230,8 +230,7 @@ async function sendMailProvider(req, plan, monthchange) { } async function sendmailv3(req) { - const nonCustomMail = await sendMailProvider(req); - return nonCustomMail; + return { status: 'error' }; } export default sendmailv3; diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index f40291ad99..8c0672e8c0 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -27,7 +27,7 @@ "generate-api-key": "^1.0.2", "googleapis": "^144.0.0", "mailgun.js": "^11.1.0", - "mongodb": "^6.14.0", + "mongodb": "^6.13.0", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "node-forge": "^1.3.1", @@ -37,7 +37,7 @@ "parse-server": "^7.4.0", "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", - "posthog-node": "^4.8.1", + "posthog-node": "^4.5.0", "ws": "^8.18.0" }, "devDependencies": { @@ -11739,10 +11739,9 @@ } }, "node_modules/bson": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", - "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", - "license": "Apache-2.0", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", + "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", "engines": { "node": ">=16.20.1" } @@ -15434,13 +15433,13 @@ } }, "node_modules/mongodb": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.0.tgz", - "integrity": "sha512-AlM6alTx98vcnk/jMMmoYuBrm4qpe1/VrbwvL2SXEHjdtJ1ZbVZmrpyjUx9mqS94e9HcemzpLn+CxzhmT7b0uw==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", + "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", "license": "Apache-2.0", "dependencies": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.3", + "bson": "^6.10.1", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -16906,9 +16905,9 @@ } }, "node_modules/posthog-node": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-4.8.1.tgz", - "integrity": "sha512-ApMEC1+DbctP/88+VhaCl8SRKpIoReibMf7Mb3rxw3yMthr1rKaM4opbHdZJ0buLhwS5zX8B2ckqLjpwpSjRPg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-4.5.0.tgz", + "integrity": "sha512-h1WTHYvgOZ7kBGH0XfKVOVsSyFgCEbgzC2RIw7fetsW6RrSvxPYcaycKUDfqa5EGbvU0SYLbqAeeqNZjPDaznA==", "license": "MIT", "dependencies": { "axios": "^1.7.4" diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 2b59daa351..8c3b51102b 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -36,7 +36,7 @@ "generate-api-key": "^1.0.2", "googleapis": "^144.0.0", "mailgun.js": "^11.1.0", - "mongodb": "^6.14.0", + "mongodb": "^6.13.0", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "node-forge": "^1.3.1", @@ -46,7 +46,7 @@ "parse-server": "^7.4.0", "parse-server-api-mail-adapter": "^4.1.0", "pdf-lib": "^1.17.1", - "posthog-node": "^4.8.1", + "posthog-node": "^4.5.0", "ws": "^8.18.0" }, "type": "module", From 8d6ed3d2b5ffa62108f00c0e088f3299b392e08a Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Tue, 4 Mar 2025 06:19:26 +0000 Subject: [PATCH 16/19] Merge pull request #357 from OpenSignLabs/revert_mail revert: revert mail sending --- apps/OpenSign/src/components/pdf/EmailComponent.js | 12 ++---------- apps/OpenSign/src/pages/PlaceHolderSign.js | 8 ++------ apps/OpenSign/src/primitives/GetReportDisplay.js | 9 ++------- .../cloud/parsefunction/getUserDetails.js | 2 -- .../cloud/parsefunction/getUserListByOrg.js | 2 -- .../OpenSignServer/cloud/parsefunction/sendMailv3.js | 3 ++- 6 files changed, 8 insertions(+), 28 deletions(-) diff --git a/apps/OpenSign/src/components/pdf/EmailComponent.js b/apps/OpenSign/src/components/pdf/EmailComponent.js index 2d94c5e3b5..bea4e63523 100644 --- a/apps/OpenSign/src/components/pdf/EmailComponent.js +++ b/apps/OpenSign/src/components/pdf/EmailComponent.js @@ -103,16 +103,8 @@ function EmailComponent({ setEmailList([]); }, 1500); setIsLoading(false); - } else if (sendMail?.data?.result?.status === "daily-quota-reached") { - setIsLoading(false); - setIsEmail(false); - setIsAlert({ - isShow: true, - alertMessage: t("daily-quota-reached") - }); - setEmailValue(""); - setEmailList([]); - } else { + } + else { setIsLoading(false); setIsEmail(false); setIsAlert({ diff --git a/apps/OpenSign/src/pages/PlaceHolderSign.js b/apps/OpenSign/src/pages/PlaceHolderSign.js index 855c5bb37b..e6e630aff4 100644 --- a/apps/OpenSign/src/pages/PlaceHolderSign.js +++ b/apps/OpenSign/src/pages/PlaceHolderSign.js @@ -1311,12 +1311,8 @@ function PlaceHolderSign() { setIsMailSend(true); setIsLoading({ isLoad: false }); setIsUiLoading(false); - } else if (sendMail?.data?.result?.status === "daily-quota-reached") { - setMailStatus("daily-quota-reached"); - setIsSend(true); - setIsMailSend(true); - setIsUiLoading(false); - } else if (sendMail?.data?.result?.status === "quota-reached") { + } + else if (sendMail?.data?.result?.status === "quota-reached") { setMailStatus("quotareached"); setIsSend(true); setIsMailSend(true); diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index 97ca23f924..c56cb20f00 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -806,13 +806,8 @@ const ReportTable = (props) => { setIsAlert(true); setAlertMsg({ type: "success", message: t("mail-sent-alert") }); setIsResendMail({}); - } else if (res?.data?.result?.status === "daily-quota-reached") { - setIsAlert(true); - setAlertMsg({ - type: "danger", - message: t("daily-quota-reached") - }); - } else { + } + else { setIsAlert(true); setAlertMsg({ type: "danger", diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js index df36c5b017..6e1127e7e9 100644 --- a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js +++ b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js @@ -17,8 +17,6 @@ async function getUserDetails(request) { userQuery.exclude('TenantId.FileAdapters'); userQuery.exclude('google_refresh_token'); userQuery.exclude('TenantId.PfxFile'); - userQuery.exclude('DailyEmailReset'); - userQuery.exclude('DailyEmailCount'); if (userId) { userQuery.equalTo('CreatedBy', { __type: 'Pointer', className: '_User', objectId: userId }); } diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js b/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js index 74b8730bbb..ffb173a6cf 100644 --- a/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js +++ b/apps/OpenSignServer/cloud/parsefunction/getUserListByOrg.js @@ -13,8 +13,6 @@ export default async function getUserListByOrg(req) { extUser.equalTo('OrganizationId', orgPtr); extUser.include('TeamIds'); extUser.descending('createdAt'); - extUser.exclude('DailyEmailReset'); - extUser.exclude('DailyEmailCount'); const userRes = await extUser.find({ useMasterKey: true }); if (userRes.length > 0) { const _userRes = JSON.parse(JSON.stringify(userRes)); diff --git a/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js b/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js index 7c1481b76c..5762fbb130 100644 --- a/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js +++ b/apps/OpenSignServer/cloud/parsefunction/sendMailv3.js @@ -230,7 +230,8 @@ async function sendMailProvider(req, plan, monthchange) { } async function sendmailv3(req) { - return { status: 'error' }; + const nonCustomMail = await sendMailProvider(req); + return nonCustomMail; } export default sendmailv3; From 45e0679ca73d4fba6935d21b103c6f5ecedcdfb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 00:48:25 +0000 Subject: [PATCH 17/19] build(deps-dev): bump prettier in /apps/OpenSignServer Bumps [prettier](https://github.com/prettier/prettier) from 3.5.0 to 3.5.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.5.0...3.5.3) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/OpenSignServer/package-lock.json | 8 ++++---- apps/OpenSignServer/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index 8c0672e8c0..3417fd7388 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -47,7 +47,7 @@ "mongodb-runner": "^5.7.1", "nodemon": "^3.1.9", "nyc": "^17.1.0", - "prettier": "^3.5.0" + "prettier": "^3.5.3" }, "engines": { "node": "18 || 20 || 22" @@ -16933,9 +16933,9 @@ } }, "node_modules/prettier": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", - "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", "bin": { diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 8c3b51102b..655e31c7b6 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -57,7 +57,7 @@ "mongodb-runner": "^5.7.1", "nodemon": "^3.1.9", "nyc": "^17.1.0", - "prettier": "^3.5.0" + "prettier": "^3.5.3" }, "overrides": { "ws": "$ws", From a3b2c797fbb5d77c7274ad7f22d0cbb3b00ed3f7 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Wed, 19 Mar 2025 15:08:50 +0000 Subject: [PATCH 18/19] Merge pull request #395 from OpenSignLabs/fix_dailyemailquota fix: dailyemailquota not updating for user and default value not updating of checkbox in API --- apps/OpenSign/Dockerhubfile | 5 +- .../public/locales/de/translation.json | 14 +- .../public/locales/en/translation.json | 11 +- .../public/locales/es/translation.json | 16 +- .../public/locales/fr/translation.json | 15 +- .../public/locales/it/translation.json | 12 +- apps/OpenSign/src/components/AddUser.js | 534 +++++++++--------- .../src/components/pdf/EditTemplate.js | 35 +- .../src/components/pdf/EmailComponent.js | 83 +-- .../src/components/pdf/Placeholder.js | 8 +- .../src/components/pdf/PlaceholderType.js | 120 ++-- apps/OpenSign/src/components/pdf/RenderPdf.js | 110 +--- .../src/components/pdf/WidgetNameModal.js | 12 +- apps/OpenSign/src/constant/Utils.js | 146 ++--- apps/OpenSign/src/pages/Form.js | 435 +++++++------- apps/OpenSign/src/pages/PlaceHolderSign.js | 145 +++-- apps/OpenSign/src/pages/Preferences.js | 437 +++++++++----- apps/OpenSign/src/pages/SignyourselfPdf.js | 23 +- .../OpenSign/src/pages/TemplatePlaceholder.js | 42 +- apps/OpenSign/src/pages/UserList.js | 371 ++++++------ .../src/primitives/GetReportDisplay.js | 132 ++--- apps/OpenSignServer/Dockerhubfile | 6 +- apps/OpenSignServer/PDFDigitalSigner.jar | Bin 0 -> 9216 bytes apps/OpenSignServer/Utils.js | 135 +---- apps/OpenSignServer/cloud/main.js | 4 +- .../cloud/parsefunction/DocumentBeforesave.js | 9 + .../cloud/parsefunction/ForwardDoc.js | 81 +++ .../cloud/parsefunction/Newsletter.js | 2 +- .../cloud/parsefunction/SendMailOTPv1.js | 2 +- .../cloud/parsefunction/TemplateBeforesave.js | 9 + .../generateCertificatebydocId.js | 20 +- .../cloud/parsefunction/pdf/DigitalSign.js | 35 ++ .../cloud/parsefunction/pdf/PDF.js | 147 +++-- .../cloud/parsefunction/updatePreferences.js | 6 + apps/OpenSignServer/exports/.gitkeep | 0 .../exports/exported_file_2107.pdf | Bin 175437 -> 0 bytes apps/OpenSignServer/package-lock.json | 8 +- apps/OpenSignServer/package.json | 2 +- apps/OpenSignServer/pdfbox-app-3.0.4.jar | Bin 0 -> 13454142 bytes apps/OpenSignServer/test.pdf | Bin 196766 -> 0 bytes 40 files changed, 1582 insertions(+), 1590 deletions(-) create mode 100644 apps/OpenSignServer/PDFDigitalSigner.jar create mode 100644 apps/OpenSignServer/cloud/parsefunction/ForwardDoc.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/DigitalSign.js create mode 100644 apps/OpenSignServer/exports/.gitkeep delete mode 100644 apps/OpenSignServer/exports/exported_file_2107.pdf create mode 100644 apps/OpenSignServer/pdfbox-app-3.0.4.jar delete mode 100644 apps/OpenSignServer/test.pdf diff --git a/apps/OpenSign/Dockerhubfile b/apps/OpenSign/Dockerhubfile index d470799737..395bad9d64 100644 --- a/apps/OpenSign/Dockerhubfile +++ b/apps/OpenSign/Dockerhubfile @@ -1,5 +1,5 @@ # Use an official Node runtime as the base image -FROM node:18 +FROM node:22.14.0 # Set the working directory inside the container WORKDIR /usr/src/app @@ -16,8 +16,7 @@ COPY apps/OpenSign/.husky . # Define environment variables if needed ENV NODE_ENV=production -ENV REACT_APP_DEPLOYMENT=free_selfhost - +ENV GENERATE_SOURCEMAP=false # build RUN npm run build diff --git a/apps/OpenSign/public/locales/de/translation.json b/apps/OpenSign/public/locales/de/translation.json index d7bb44fe27..1ec359a6e0 100644 --- a/apps/OpenSign/public/locales/de/translation.json +++ b/apps/OpenSign/public/locales/de/translation.json @@ -79,6 +79,7 @@ "Storage": "Speicher", "Signing certificate": "Signierzertifikat", "Teams": "Teams", + "General": "Allgemein", "Teams-Children": { "Organizations": "Organisationen", "OrgAdmins": "OrgAdmins" @@ -149,7 +150,8 @@ "Copy Public URL": "Öffentliche URL kopieren", "extend-expiry-date": "Ablaufdatum verlängern", "Duplicate Template": "Vorlage duplizieren", - "Duplicate": "Duplikat" + "Duplicate": "Duplikat", + "daily-mail-quota": "Tägliches E-Mail-Kontingent" }, "report-heading": { "Sr.No": "Nr.", @@ -169,7 +171,7 @@ "Name": "Name", "Status": "Status", "created-date": "Erstellungsdatum", - "Type": "Typ", + "Type": "Type", "Logs": "Protokolle", "Expiry-date": "Ablaufdatum" }, @@ -604,6 +606,7 @@ "placeholder-sign-4": "Ziehen Sie ein Feld in das Dokument oder klicken Sie darauf, um es hinzuzufügen.", "placeholder-sign-5": "Der PDF-Inhaltsbereich zeigt bereits die vorhandenen Platzhalter der Vorlage an. Diese Platzhalter entsprechen der Farbe des Empfängernamens, um sie leicht erkennbar zu machen.", "placeholder-sign-6": "Mit einem Klick auf 'Weiter' wird das Dokument gespeichert. Im nächsten Schritt können Sie die E-Mails, die an die Empfänger versendet werden sollen, anpassen oder die Signaturlinks kopieren und diese selbst mit den Empfängern teilen.", + "report-1":"Klicken Sie auf die Schaltfläche „Hinzufügen“, um eine neue Vorlage zu erstellen. Vorlagen sind wiederverwendbare Dokumente, mit denen schnell neue Dokumente mit derselben Struktur und unterschiedlichen Unterzeichnern erstellt werden können. Eine HR-Vorlage für die Einarbeitung könnte beispielsweise vordefinierte Rollen wie „Personalleiter“ und „Neuer Mitarbeiter“ enthalten. Bei jeder Verwendung der Vorlage können Sie die Rolle „Neuer Mitarbeiter“ verschiedenen neuen Mitarbeitern zuweisen, während die Rolle „Personalleiter“ unverändert bleibt. So wird ein nahtloser Einarbeitungsprozess für jeden neuen Mitarbeiter ermöglicht.", "redirect": "Klicken Sie auf die Schaltfläche 'Verwenden', um ein neues Dokument aus einer bestehenden Vorlage zu erstellen.", "bulksend": "Um schnell mehrere Dokumente mithilfe einer vorhandenen Vorlage zu versenden, indem Sie einfach die E-Mail-Adressen der Empfänger erstellen, klicken Sie auf die Schaltfläche ‚Massenversand‘", "option": "Dieses Menü zeigt weitere Optionen wie Bearbeiten und Löschen. Verwenden Sie die Schaltfläche 'Bearbeiten', um Unterzeichnerrollen hinzuzufügen, Felder zu ändern und Ihre Vorlage zu aktualisieren. Änderungen gelten für alle zukünftigen Dokumente, die aus dieser Vorlage erstellt werden, wirken sich jedoch nicht auf vorhandene Dokumente aus. Verwenden Sie die Schaltfläche 'Löschen', um die Vorlage zu entfernen.", @@ -848,5 +851,10 @@ "draft-template-info-p1": "Um Ihre Vorlage öffentlich zu machen, muss sie entweder eine einzelne Rolle enthalten oder, wenn sie mehrere Rollen umfasst, müssen alle zusätzlichen Rollen bereits den Unterzeichnern zugewiesen sein. Die nicht zugewiesene öffentliche Rolle muss leer bleiben und an erster Stelle stehen.", "visit-below-link": "Besuchen Sie den untenstehenden Link, um mehr zu erfahren -", "storage-help": "Durch die Aktivierung von BYOC können Sie Ihren eigenen S3-Speicher verbinden, sodass Ihre Dateien vollständig unter Ihrer Kontrolle bleiben und keine externen Kopien gespeichert werden. Wenn Ihnen Datenautonomie wichtig ist, erwägen Sie ein Upgrade auf Teams, um diese Funktion freizuschalten.", - "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." + "daily-quota-reached": "Sie haben Ihr tägliches Kontingent erreicht. Für Unterstützung kontaktieren Sie bitte quotas@opensignlabs.com.", + "enabled-signature-type": "Aktivierte Signaturtypen", + "enabled-signature-type-help": "Die Einstellung 'Aktivierte Signaturtypen' bestimmt, welche Signaturoptionen in Ihrer Organisation verfügbar sind. Wenn Sie beispielsweise die Option 'Zeichnen' deaktivieren, wird sie den Mitgliedern Ihrer Organisation im Signatur-Widget nicht angezeigt, während die anderen drei Optionen weiterhin zugänglich bleiben.", + "indexing-public-profile": "Erlaube die Indexierung des öffentlichen Profils durch Suchmaschinen", + "user-created-successfully": "Benutzer erfolgreich erstellt.", + "only-15-reminder-allowed": "Sie können bis zu 15 automatische Erinnerungen festlegen. Wenn zum Beispiel 'TimeToComplete' auf 15 Tage und 'RemindOnceInEvery' auf 1 Tag eingestellt ist, erreichen Sie das maximale Limit von 15 Erinnerungen. Passen Sie Ihre Einstellungen entsprechend an." } diff --git a/apps/OpenSign/public/locales/en/translation.json b/apps/OpenSign/public/locales/en/translation.json index 3044449a9d..de165cf02f 100644 --- a/apps/OpenSign/public/locales/en/translation.json +++ b/apps/OpenSign/public/locales/en/translation.json @@ -79,6 +79,7 @@ "Storage": "Storage", "Signing certificate": "Signing certificate", "Teams": "Teams", + "General": "General", "Teams-Children": { "Organizations": "Organizations", "OrgAdmins": "OrgAdmins" @@ -149,7 +150,8 @@ "Copy Public URL": "Copy public URL", "extend-expiry-date": "Extend expiry date", "Duplicate Template": "Duplicate template", - "Duplicate": "Duplicate" + "Duplicate": "Duplicate", + "daily-mail-quota": "Daily Email Quota" }, "report-heading": { "Sr.No": "Sr.No", @@ -849,5 +851,10 @@ "draft-template-info-p1": "To make your template public, it must either contain a single role, or, if it includes multiple roles, all additional roles must already be assigned to signers. The unassigned public role should remain empty and must be placed in the first position.", "visit-below-link": "Visit below link to know more -", "storage-help": "Enabling BYOC lets you connect your own S3 storage so your files remain entirely under your control—no external copies retained. If data autonomy matters to you, consider upgrading to Teams to unlock this feature.", - "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." + "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com.", + "enabled-signature-type": "Enabled Signature Types", + "enabled-signature-type-help": "The 'Enabled Signature Types' setting determines which signature options are available across your organization. For example, if you disable the 'Draw' option, members of your organization will not see it in the signature widget, while the other three options will remain accessible.", + "indexing-public-profile": "Allow indexing of public profile by search engines", + "user-created-successfully": "user created successfully.", + "only-15-reminder-allowed": "You can set up to 15 automatic reminders. For example, if 'TimeToComplete' is 15 days and 'RemindOnceInEvery' is 1 day, you'll reach the maximum limit of 15 reminders. Adjust your settings accordingly." } diff --git a/apps/OpenSign/public/locales/es/translation.json b/apps/OpenSign/public/locales/es/translation.json index 8a891f28ee..f4f3ed50e7 100644 --- a/apps/OpenSign/public/locales/es/translation.json +++ b/apps/OpenSign/public/locales/es/translation.json @@ -79,6 +79,7 @@ "Storage": "Almacenamiento", "Signing certificate": "Certificado de firma", "Teams": "Equipos", + "General": "General", "Teams-Children": { "Organizations": "Organizaciones", "OrgAdmins": "OrgAdmins" @@ -149,7 +150,8 @@ "Copy Public URL": "Copiar URL pública", "extend-expiry-date": "Date d'expiration", "Duplicate Template": "Plantilla duplicada", - "Duplicate": "Duplicada" + "Duplicate": "Duplicada", + "daily-mail-quota": "Cuota diaria de correos electrónicos" }, "report-heading": { "Sr.No": "Nº", @@ -765,8 +767,6 @@ "term-cond-p3": "Recibirá y firmará documentos electrónicamente a través de {{appName}}.", "term-cond-p4": "Su firma electrónica es jurídicamente vinculante y equivalente a una firma manuscrita.", "term-cond-h2": "2. Consentimiento para el uso de registros y firmas electrónicas", - "js-snippet-msg-2": "Administrar plantillas", - "js-snippet-msg-3": "página.", "term-cond-p5": "Al aceptar esta Divulgación:", "term-cond-p6": "Usted acepta realizar transacciones electrónicas con el Remitente utilizando {{appName}} y comprende que este consentimiento es válido hasta que se retire.", "term-cond-p7": "Usted acepta revisar, firmar y devolver documentos electrónicamente utilizando {{appName}}.", @@ -802,6 +802,8 @@ "term-cond-p30": " o correo electrónico", "js-snippet-msg": "Para integrar plantillas {{appName}} en sus sitios web HTML o páginas de destino, puede utilizar el siguiente código:", "js-snippet-msg-1": "Puede obtener el TemplateId en la página Administrar plantillas", + "js-snippet-msg-2": "Administrar plantillas", + "js-snippet-msg-3": "página.", "agrrement-alert": "Para continuar, debe consentir la divulgación de registros y firmas electrónicas.", "webhook-already-exists": "¡La URL ya existe! Pruebe con uno diferente.", "webhook-must-be-secure": "La URL del webhook debe ser segura y utilizar https://", @@ -848,7 +850,11 @@ "agreement-note": "Nota: Aceptar esto no significa que esté firmando el documento de inmediato. Esto solo le permite revisar el documento electrónicamente. Tendrá la oportunidad de leerlo en su totalidad y decidir si desea firmarlo después.", "draft-template-info-p1": "Para hacer que tu plantilla sea pública, debe contener un único rol o, si incluye múltiples roles, todos los roles adicionales deben estar ya asignados a firmantes. El rol público no asignado debe permanecer vacío y debe estar en la primera posición.", "visit-below-link": "Visita el siguiente enlace para saber más -", - "upgrade-to-team-plan": "Actualizar a team plan", "storage-help": "Habilitar BYOC te permite conectar tu propio almacenamiento S3 para que tus archivos permanezcan completamente bajo tu control, sin copias externas retenidas. Si la autonomía de los datos es importante para ti, considera actualizar a Teams para desbloquear esta función.", - "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." + "daily-quota-reached": "Ha alcanzado su cuota diaria. Para obtener ayuda, comuníquese con quotas@opensignlabs.com.", + "enabled-signature-type": "Tipos de firma habilitados", + "enabled-signature-type-help": "La configuración de 'Tipos de firma habilitados' determina qué opciones de firma están disponibles en su organización. Por ejemplo, si desactiva la opción 'Dibujar', los miembros de su organización no la verán en el widget de firma, mientras que las otras tres opciones seguirán siendo accesibles.", + "indexing-public-profile": "Permitir la indexación del perfil público por los motores de búsqueda", + "user-created-successfully": "Usuario creado con éxito.", + "only-15-reminder-allowed": "Puede configurar hasta 15 recordatorios automáticos. Por ejemplo, si 'TimeToComplete' es de 15 días y 'RemindOnceInEvery' es de 1 día, alcanzará el límite máximo de 15 recordatorios. Ajuste su configuración en consecuencia." } diff --git a/apps/OpenSign/public/locales/fr/translation.json b/apps/OpenSign/public/locales/fr/translation.json index 13d302b684..30302c1a98 100644 --- a/apps/OpenSign/public/locales/fr/translation.json +++ b/apps/OpenSign/public/locales/fr/translation.json @@ -79,6 +79,7 @@ "Storage": "Stockage", "Signing certificate": "Certificat de signature", "Teams": "Équipes", + "General": "Général", "Teams-Children": { "Organizations": "Organisations", "OrgAdmins": "OrgAdmins" @@ -170,7 +171,8 @@ "Copy Public URL": "Copier l'URL publique", "extend-expiry-date": "Prolonger la date d'expiration", "Duplicate Template": "dupliquer le modèle", - "Duplicate": "Double" + "Duplicate": "Double", + "daily-mail-quota": "Quota d'e-mails quotidien" }, "report-help": { "Draft Documents": "Il s'agit de documents que vous avez commencés mais que vous n'avez pas finalisés pour envoi.", @@ -450,6 +452,7 @@ "add-recipients": "Ajouter des destinataires", "loading-mssg": "Cela pourrait prendre du temps", "send-mail": "Envoyer un mail", + "signature-field-widget": "Au moins un champ de signature doit être ajouté pour chaque utilisateur. Vous n'avez pas ajouté de champs de signature pour {{signersName}}", "placeholder-alert-1": "Veuillez vous assurer qu'au moins un widget de signature est ajouté pour tous les destinataires.", "placeholder-alert-2": "Veuillez confirmer que vous avez rempli le champ de texte.", "placeholder-alert-3": "Etes-vous sûr de vouloir envoyer ce document pour signature ? ", @@ -557,7 +560,8 @@ "do-not-access-contact-admin": "Vous n'y avez pas accès, veuillez contacter l'administrateur.", "filed-required-correctly": "Veuillez remplir correctement les informations requises.", "admin-created": "Administrateur créé", - "invalid-masterkey": "Clé principale invalide", "master-key": "La clef maitresse", + "invalid-masterkey": "Clé principale invalide", + "master-key": "La clef maitresse", "profile-update-alert": "Mise à jour du profil réussie.", "date": "Date", "report-not-found": "Rapport introuvable", @@ -847,5 +851,10 @@ "draft-template-info-p1": "Pour rendre votre modèle public, il doit contenir un seul rôle ou, s'il inclut plusieurs rôles, tous les rôles supplémentaires doivent déjà être attribués aux signataires. Le rôle public non attribué doit rester vide et être placé en première position.", "visit-below-link": "Visitez le lien ci-dessous pour en savoir plus -", "storage-help": "Activer BYOC vous permet de connecter votre propre stockage S3 afin que vos fichiers restent entièrement sous votre contrôle, sans copie externe conservée. Si l'autonomie des données est importante pour vous, envisagez de passer à l'offre Teams pour débloquer cette fonctionnalité.", - "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." + "daily-quota-reached": "Vous avez atteint votre quota quotidien. Pour obtenir de l'aide, veuillez contacter quotas@opensignlabs.com.", + "enabled-signature-type": "Types de signature activés", + "enabled-signature-type-help": "Le paramètre 'Types de signature activés' détermine quelles options de signature sont disponibles dans votre organisation. Par exemple, si vous désactivez l'option 'Dessiner', les membres de votre organisation ne la verront pas dans le widget de signature, tandis que les trois autres options resteront accessibles.", + "indexing-public-profile": "Autoriser l'indexation du profil public par les moteurs de recherche", + "user-created-successfully": "Utilisateur créé avec succès.", + "only-15-reminder-allowed": "Vous pouvez définir jusqu'à 15 rappels automatiques. Par exemple, si 'TimeToComplete' est de 15 jours et 'RemindOnceInEvery' est de 1 jour, vous atteindrez la limite maximale de 15 rappels. Ajustez vos paramètres en conséquence." } diff --git a/apps/OpenSign/public/locales/it/translation.json b/apps/OpenSign/public/locales/it/translation.json index e7276d5c2e..fdfe4f7f4b 100644 --- a/apps/OpenSign/public/locales/it/translation.json +++ b/apps/OpenSign/public/locales/it/translation.json @@ -79,6 +79,7 @@ "Storage": "Archiviazione", "Signing certificate": "Certificato di firma", "Teams": "Squadre", + "General": "Generale", "Teams-Children": { "Organizations": "Organizzazioni", "OrgAdmins": "OrgAdmins" @@ -149,7 +150,8 @@ "Copy Public URL": "Copia URL pubblico", "extend-expiry-date": "Estendi data di scadenza", "Duplicate Template": "Duplica modello", - "Duplicate": "Duplica" + "Duplicate": "Duplica", + "daily-mail-quota": "Quota e-mail giornaliera" }, "report-heading": { "Sr.No": "Nr.", @@ -450,6 +452,7 @@ "add-recipients": "Aggiungi destinatari", "loading-mssg": "Questo potrebbe richiedere del tempo", "send-mail": "Invia Mail", + "signature-field-widget":"È necessario aggiungere almeno un campo firma per ogni utente. Non hai aggiunto campi firma per {{signersName}}", "placeholder-alert-1": "Assicurati che sia stato aggiunto almeno un widget per la firma per tutti i destinatari.", "placeholder-alert-2": "Conferma di aver compilato il campo di testo.", "placeholder-alert-3": "Sei sicuro di voler inviare questo documento per le firme?", @@ -848,5 +851,10 @@ "draft-template-info-p1": "Per rendere il tuo modello pubblico, deve contenere un solo ruolo oppure, se include più ruoli, tutti i ruoli aggiuntivi devono essere già assegnati ai firmatari. Il ruolo pubblico non assegnato deve rimanere vuoto e deve essere posizionato per primo.", "visit-below-link": "Visita il link qui sotto per saperne di più -", "storage-help": "Abilitare BYOC ti consente di collegare il tuo archivio S3 in modo che i tuoi file rimangano completamente sotto il tuo controllo, senza copie esterne conservate. Se l'autonomia dei dati è importante per te, considera l'upgrade a Teams per sbloccare questa funzionalità.", - "daily-quota-reached": "You’ve reached your daily quota. For assistance, please contact quotas@opensignlabs.com." + "daily-quota-reached": "Hai raggiunto la tua quota giornaliera. Per assistenza, contatta quotas@opensignlabs.com.", + "enabled-signature-type": "Tipi di firma abilitati", + "enabled-signature-type-help": "L'impostazione 'Tipi di firma abilitati' determina quali opzioni di firma sono disponibili nella tua organizzazione. Ad esempio, se disabiliti l'opzione 'Disegna', i membri della tua organizzazione non la vedranno nel widget della firma, mentre le altre tre opzioni resteranno accessibili.", + "indexing-public-profile": "Consenti l'indicizzazione del profilo pubblico dai motori di ricerca", + "user-created-successfully": "Utente creato con successo.", + "only-15-reminder-allowed": "Puoi impostare fino a 15 promemoria automatici. Ad esempio, se 'TimeToComplete' è di 15 giorni e 'RemindOnceInEvery' è di 1 giorno, raggiungerai il limite massimo di 15 promemoria. Regola le tue impostazioni di conseguenza." } diff --git a/apps/OpenSign/src/components/AddUser.js b/apps/OpenSign/src/components/AddUser.js index 4b48c9ba47..50106d63ff 100644 --- a/apps/OpenSign/src/components/AddUser.js +++ b/apps/OpenSign/src/components/AddUser.js @@ -2,13 +2,8 @@ import React, { useEffect, useState } from "react"; import Parse from "parse"; import Title from "./Title"; import Loader from "../primitives/Loader"; -import { - copytoData, - usertimezone -} from "../constant/Utils"; -import { - emailRegex, -} from "../constant/const"; +import { copytoData, usertimezone } from "../constant/Utils"; +import { emailRegex } from "../constant/const"; import { useTranslation } from "react-i18next"; function generatePassword(length) { const characters = @@ -46,9 +41,9 @@ const AddUser = (props) => { if (teamRes.length > 0) { const _teamRes = JSON.parse(JSON.stringify(teamRes)); setTeamList(_teamRes); - const allUserId = - _teamRes.find((x) => x.Name === "All Users")?.objectId || ""; - setFormdata((prev) => ({ ...prev, team: allUserId })); + const allUserId = + _teamRes.find((x) => x.Name === "All Users")?.objectId || ""; + setFormdata((prev) => ({ ...prev, team: allUserId })); } }; const checkUserExist = async () => { @@ -76,167 +71,167 @@ const AddUser = (props) => { setIsFormLoader(true); const res = await checkUserExist(); if (res) { - props.setIsAlert({ type: "danger", msg: t("user-already-exist") }); + props.showAlert("danger", t("user-already-exist")); setIsFormLoader(false); - setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1000); } else { - try { - const extUser = new Parse.Object("contracts_Users"); - extUser.set("Name", formdata.name); - if (formdata.phone) { - extUser.set("Phone", formdata.phone); - } - extUser.set("Email", formdata.email); - extUser.set("UserRole", `contracts_${formdata.role}`); - if (formdata?.team) { - extUser.set("TeamIds", [ - { - __type: "Pointer", - className: "contracts_Teams", - objectId: formdata.team - } - ]); - } - if (localUser && localUser.OrganizationId) { - extUser.set("OrganizationId", { - __type: "Pointer", - className: "contracts_Organizations", - objectId: localUser.OrganizationId.objectId - }); - } - if (localUser && localUser.Company) { - extUser.set("Company", localUser.Company); - } - - if (localStorage.getItem("TenantId")) { - extUser.set("TenantId", { - __type: "Pointer", - className: "partners_Tenant", - objectId: localStorage.getItem("TenantId") - }); - } - const timezone = usertimezone; - if (timezone) { - extUser.set("Timezone", timezone); - } + if (localStorage.getItem("TenantId")) { try { - const _users = Parse.Object.extend("User"); - const _user = new _users(); - _user.set("name", formdata.name); - _user.set("username", formdata.email); - _user.set("email", formdata.email); - _user.set("password", formdata.password); + const extUser = new Parse.Object("contracts_Users"); + extUser.set("Name", formdata.name); if (formdata.phone) { - _user.set("phone", formdata.phone); + extUser.set("Phone", formdata.phone); + } + extUser.set("Email", formdata.email); + extUser.set("UserRole", `contracts_${formdata.role}`); + if (formdata?.team) { + extUser.set("TeamIds", [ + { + __type: "Pointer", + className: "contracts_Teams", + objectId: formdata.team + } + ]); + } + if (localUser && localUser.OrganizationId) { + extUser.set("OrganizationId", { + __type: "Pointer", + className: "contracts_Organizations", + objectId: localUser.OrganizationId.objectId + }); + } + if (localUser && localUser.Company) { + extUser.set("Company", localUser.Company); + } + + if (localStorage.getItem("TenantId")) { + extUser.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenantId") + }); + } + const timezone = usertimezone; + if (timezone) { + extUser.set("Timezone", timezone); } + try { + const _users = Parse.Object.extend("User"); + const _user = new _users(); + _user.set("name", formdata.name); + _user.set("username", formdata.email); + _user.set("email", formdata.email); + _user.set("password", formdata.password); + if (formdata.phone) { + _user.set("phone", formdata.phone); + } - const user = await _user.save(); - if (user) { - const currentUser = Parse.User.current(); - extUser.set( - "CreatedBy", - Parse.User.createWithoutData(currentUser.id) - ); + const user = await _user.save(); + if (user) { + const currentUser = Parse.User.current(); + extUser.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); - extUser.set("UserId", user); - const acl = new Parse.ACL(); - acl.setPublicReadAccess(true); - acl.setPublicWriteAccess(true); - acl.setReadAccess(currentUser.id, true); - acl.setWriteAccess(currentUser.id, true); + extUser.set("UserId", user); + const acl = new Parse.ACL(); + acl.setPublicReadAccess(true); + acl.setPublicWriteAccess(true); + acl.setReadAccess(currentUser.id, true); + acl.setWriteAccess(currentUser.id, true); - extUser.setACL(acl); + extUser.setACL(acl); - const res = await extUser.save(); + const res = await extUser.save(); - const parseData = JSON.parse(JSON.stringify(res)); + const parseData = JSON.parse(JSON.stringify(res)); - if (props.closePopup) { - props.closePopup(); - } - if (props.handleUserData) { - if (formdata?.team) { - const team = teamList.find( - (x) => x.objectId === formdata.team - ); - parseData.TeamIds = parseData.TeamIds.map((y) => - y.objectId === team.objectId ? team : y - ); + if (props.closePopup) { + props.closePopup(); + } + if (props.handleUserData) { + if (formdata?.team) { + const team = teamList.find( + (x) => x.objectId === formdata.team + ); + parseData.TeamIds = parseData.TeamIds.map((y) => + y.objectId === team.objectId ? team : y + ); + } + props.handleUserData(parseData); } - props.handleUserData(parseData); - } - setIsFormLoader(false); - setFormdata({ - name: "", - email: "", - phone: "", - team: "", - role: "" - }); - } - } catch (err) { - console.log("err ", err); - if (err.code === 202) { - const params = { email: formdata.email }; - const userRes = await Parse.Cloud.run("getUserId", params); - const currentUser = Parse.User.current(); - extUser.set( - "CreatedBy", - Parse.User.createWithoutData(currentUser.id) - ); + setIsFormLoader(false); + setFormdata({ + name: "", + email: "", + phone: "", + team: "", + role: "" + }); + props.showAlert("success", t("user-created-successfully")); + } + } catch (err) { + console.log("err ", err); + if (err.code === 202) { + const params = { email: formdata.email }; + const userRes = await Parse.Cloud.run("getUserId", params); + const currentUser = Parse.User.current(); + extUser.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); - extUser.set("UserId", { - __type: "Pointer", - className: "_User", - objectId: userRes.id - }); - const acl = new Parse.ACL(); - acl.setPublicReadAccess(true); - acl.setPublicWriteAccess(true); - acl.setReadAccess(currentUser.id, true); - acl.setWriteAccess(currentUser.id, true); + extUser.set("UserId", { + __type: "Pointer", + className: "_User", + objectId: userRes.id + }); + const acl = new Parse.ACL(); + acl.setPublicReadAccess(true); + acl.setPublicWriteAccess(true); + acl.setReadAccess(currentUser.id, true); + acl.setWriteAccess(currentUser.id, true); - extUser.setACL(acl); - const res = await extUser.save(); + extUser.setACL(acl); + const res = await extUser.save(); - const parseData = JSON.parse(JSON.stringify(res)); - if (props.closePopup) { - props.closePopup(); - } - if (props.handleUserData) { - if (formdata?.team) { - const team = teamList.find( - (x) => x.objectId === formdata.team - ); - parseData.TeamIds = parseData.TeamIds.map((y) => - y.objectId === team.objectId ? team : y - ); + const parseData = JSON.parse(JSON.stringify(res)); + if (props.closePopup) { + props.closePopup(); + } + if (props.handleUserData) { + if (formdata?.team) { + const team = teamList.find( + (x) => x.objectId === formdata.team + ); + parseData.TeamIds = parseData.TeamIds.map((y) => + y.objectId === team.objectId ? team : y + ); + } + props.handleUserData(parseData); } - props.handleUserData(parseData); + setIsFormLoader(false); + setFormdata({ + name: "", + email: "", + phone: "", + team: "", + role: "" + }); + props.showAlert("success", t("user-created-successfully")); + } else { + setIsFormLoader(false); + props.showAlert("danger", t("something-went-wrong-mssg")); } - setIsFormLoader(false); - setFormdata({ - name: "", - email: "", - phone: "", - team: "", - role: "" - }); } + } catch (err) { + console.log("err", err); + setIsFormLoader(false); + props.showAlert("danger", t("something-went-wrong-mssg")); } - } catch (err) { - console.log("err", err); - setIsFormLoader(false); - props.setIsAlert({ - type: "danger", - msg: t("something-went-wrong-mssg") - }); - } finally { - setTimeout( - () => props.setIsAlert({ type: "success", msg: "" }), - 1500 - ); + } else { + props.showAlert("danger", t("something-went-wrong-mssg")); } } } @@ -259,8 +254,7 @@ const AddUser = (props) => { const copytoclipboard = (text) => { copytoData(text); - props.setIsAlert({ type: "success", msg: t("copied") }); - setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1500); // Reset copied state after 1.5 seconds + props.showAlert("success", t("copied")); }; return (
@@ -270,126 +264,120 @@ const AddUser = (props) => {
)} -
-
-
- - handleChange(e)} - onInvalid={(e) => - e.target.setCustomValidity(t("input-required")) - } - onInput={(e) => e.target.setCustomValidity("")} - required - className="op-input op-input-bordered op-input-sm focus:outline-none hover:border-base-content w-full text-xs" - /> -
-
- - handleChange(e)} - required - onInvalid={(e) => - e.target.setCustomValidity(t("input-required")) - } - onInput={(e) => e.target.setCustomValidity("")} - className="op-input op-input-bordered op-input-sm focus:outline-none hover:border-base-content w-full text-xs" - /> -
-
- -
-
{formdata?.password}
- copytoclipboard(formdata?.password)} - className="fa-light fa-copy rounded-full hover:bg-base-300 p-[8px] cursor-pointer " - > -
-
- {t("password-generateed")} -
-
-
- - handleChange(e)} - className="op-input op-input-bordered op-input-sm focus:outline-none hover:border-base-content w-full text-xs" - /> -
-
- - -
-
- -
handleReset()} - className="op-btn op-btn-secondary" - > - {t("cancel")} -
-
-
-
+
+
+
+ + handleChange(e)} + onInvalid={(e) => e.target.setCustomValidity(t("input-required"))} + onInput={(e) => e.target.setCustomValidity("")} + required + className="op-input op-input-bordered op-input-sm focus:outline-none hover:border-base-content w-full text-xs" + /> +
+
+ + handleChange(e)} + required + onInvalid={(e) => e.target.setCustomValidity(t("input-required"))} + onInput={(e) => e.target.setCustomValidity("")} + className="op-input op-input-bordered op-input-sm focus:outline-none hover:border-base-content w-full text-xs" + /> +
+
+ +
+
{formdata?.password}
+ copytoclipboard(formdata?.password)} + className="fa-light fa-copy rounded-full hover:bg-base-300 p-[8px] cursor-pointer " + > +
+
+ {t("password-generateed")} +
+
+
+ + handleChange(e)} + className="op-input op-input-bordered op-input-sm focus:outline-none hover:border-base-content w-full text-xs" + /> +
+
+ + +
+
+ +
handleReset()} + className="op-btn op-btn-secondary" + > + {t("cancel")} +
+
+
+
); }; diff --git a/apps/OpenSign/src/components/pdf/EditTemplate.js b/apps/OpenSign/src/components/pdf/EditTemplate.js index 5c2c5f4c9a..e612e65247 100644 --- a/apps/OpenSign/src/components/pdf/EditTemplate.js +++ b/apps/OpenSign/src/components/pdf/EditTemplate.js @@ -1,19 +1,11 @@ -import React, { - useState, -} from "react"; -import { - getFileName -} from "../../constant/Utils"; +import React, { useState } from "react"; +import { getFileName } from "../../constant/Utils"; import { useTranslation } from "react-i18next"; import { Tooltip } from "react-tooltip"; import SignersInput from "../shared/fields/SignersInput"; -const EditTemplate = ({ - template, - onSuccess, -}) => { - const appName = - "OpenSign™"; +const EditTemplate = ({ template, onSuccess }) => { + const appName = "OpenSign™"; const { t } = useTranslation(); const [formData, setFormData] = useState({ Name: template?.Name || "", @@ -64,6 +56,13 @@ const EditTemplate = ({ const IsEnableOTP = formData.IsEnableOTP === "true" ? true : false; const allowModify = formData?.AllowModifications || false; let reminderDate = {}; + const remindOnceInEvery = formData?.RemindOnceInEvery; + const TimeToCompleteDays = parseInt(formData?.TimeToCompleteDays); + const reminderCount = TimeToCompleteDays / remindOnceInEvery; + if (AutoReminder && reminderCount > 15) { + alert(t("only-15-reminder-allowed")); + return; + } if (AutoReminder) { const RemindOnceInEvery = parseInt(formData?.RemindOnceInEvery); const ReminderDate = new Date(template?.createdAt); @@ -247,11 +246,7 @@ const EditTemplate = ({
-
+
{t("yes")}
-
+
{ - const pdfName = pdfDetails[0]?.Name; setIsLoading(true); - let sendMail; - const docId = pdfDetails?.[0]?.objectId || ""; - let presignedUrl = pdfUrl; - try { - const axiosRes = await axios.post( - `${localStorage.getItem("baseUrl")}/functions/getsignedurl`, - { - url: pdfUrl, - docId: docId, - }, - { - headers: { - "content-type": "Application/json", - "X-Parse-Application-Id": localStorage.getItem("parseAppId"), - "X-Parse-Session-Token": localStorage.getItem("accesstoken") - } - } - ); - presignedUrl = axiosRes.data.result; - } catch (err) { - console.log("err in getsignedurl", err); - } - for (let i = 0; i < emailList.length; i++) { - try { - let url = `${localStorage.getItem("baseUrl")}functions/sendmailv3`; - const headers = { - "Content-Type": "application/json", - "X-Parse-Application-Id": localStorage.getItem("parseAppId"), - sessionToken: localStorage.getItem("accesstoken") - }; - const logo = - ``; - const opurl = - ` here`; - - let params = { - extUserId: extUserId, - pdfName: pdfName, - url: presignedUrl, - recipient: emailList[i], - subject: `${sender.name} has signed the doc - ${pdfName}`, - replyto: - pdfDetails?.[0]?.ExtUserPtr?.Email || - "", - from: - sender.email, - html: - `
` + - `${logo}

Document Copy

` + - `

A copy of the document ${pdfName} is attached to this email. Kindly download the document from the attachment.

` + - `

This is an automated email from ${appName}. For any queries regarding this email, please contact the sender ${sender.email} directly. ` + - `If you think this email is inappropriate or spam, you may file a complaint with ${appName}${opurl}.

` - }; - sendMail = await axios.post(url, params, { headers: headers }); - } catch (error) { - console.log("error", error); - setIsLoading(false); - setIsEmail(false); - setIsAlert({ - isShow: true, - alertMessage: t("something-went-wrong-mssg") - }); - } - } - if (sendMail?.data?.result?.status === "success") { + const params = { docId: pdfDetails?.[0]?.objectId, recipients: emailList }; + const sendmail = await Parse.Cloud.run("forwarddoc", params); + console.log("sendmail ", sendmail); + if (sendmail?.status === "success") { setSuccessEmail(true); setIsEmail(false); setTimeout(() => { @@ -103,8 +35,7 @@ function EmailComponent({ setEmailList([]); }, 1500); setIsLoading(false); - } - else { + } else { setIsLoading(false); setIsEmail(false); setIsAlert({ diff --git a/apps/OpenSign/src/components/pdf/Placeholder.js b/apps/OpenSign/src/components/pdf/Placeholder.js index 68e125cb94..6b5c425176 100644 --- a/apps/OpenSign/src/components/pdf/Placeholder.js +++ b/apps/OpenSign/src/components/pdf/Placeholder.js @@ -76,6 +76,7 @@ const changeDateToMomentFormat = (format) => { }; //function to get default format const getDefaultFormat = (dateFormat) => dateFormat || "MM/dd/yyyy"; + //function to convert formated date to new Date() format const getDefaultDate = (dateStr, format) => { //get valid date format for moment to convert formated date to new Date() format @@ -90,6 +91,7 @@ const getDefaultDate = (dateStr, format) => { return date; } }; + function Placeholder(props) { //'isTouchDevice' is used to detect whether a device has a touchscreen or is mouse-based const isTouchDevice = navigator.maxTouchPoints > 0; @@ -437,7 +439,9 @@ function Placeholder(props) { //checking widget's type and open widget copy modal for required widgets if ( - ["signature", textWidget, "stamp", "initials"].includes(props.pos.type) + ["signature", textInputWidget, textWidget, "stamp", "initials"].includes( + props.pos.type + ) ) { props.setIsPageCopy(true); props.setSignKey(props.pos.key); @@ -1083,7 +1087,7 @@ function Placeholder(props) { isSignYourself={props.isSignYourself} isSelfSign={props.isSelfSign} signerObjId={props.signerObjId} - handleUserName={props.handleUserName} + calculateFontsize={props.calculateFontsize} pdfDetails={props?.pdfDetails && props?.pdfDetails[0]} isNeedSign={props.isNeedSign} setSelectDate={setSelectDate} diff --git a/apps/OpenSign/src/components/pdf/PlaceholderType.js b/apps/OpenSign/src/components/pdf/PlaceholderType.js index 788c17d527..624b82f6a5 100644 --- a/apps/OpenSign/src/components/pdf/PlaceholderType.js +++ b/apps/OpenSign/src/components/pdf/PlaceholderType.js @@ -30,6 +30,7 @@ function PlaceholderType(props) { const inputRef = useRef(null); const [textValue, setTextValue] = useState(); const [selectedCheckbox, setSelectedCheckbox] = useState([]); + const [hint, setHint] = useState(""); const years = range(1950, getYear(new Date()) + 16, 1); const fontSize = props.calculateFont(props.pos.options?.fontSize); const fontColor = props.pos.options?.fontColor || "black"; @@ -150,6 +151,11 @@ function PlaceholderType(props) { if (defaultData) { setTextValue(defaultData); } + if (props.pos?.options?.hint) { + setHint(props.pos?.options.hint); + } else { + setHint(props.pos?.type); + } } else if ([textInputWidget].includes(props.pos?.type)) { const defaultData = props.pos?.options?.defaultValue; if (defaultData) { @@ -158,7 +164,6 @@ function PlaceholderType(props) { } // eslint-disable-next-line react-hooks/exhaustive-deps }, [props.pos?.options?.defaultValue]); - const ExampleCustomInput = forwardRef(({ value, onClick }, ref) => (
) : (
- {props?.handleUserName && - props?.handleUserName( - props?.data?.Id, - props?.data?.Role, - widgetTypeTraslation, - props.pos - )} + {props.pos.type && ( +
+ {props.isNeedSign + ? props.pos?.options?.hint || widgetTypeTraslation + : widgetTypeTraslation} +
+ )}
); case "stamp": @@ -346,13 +358,20 @@ function PlaceholderType(props) { /> ) : (
- {props?.handleUserName && - props?.handleUserName( - props?.data?.Id, - props?.data?.Role, - widgetTypeTraslation, - props.pos - )} + {props.pos.type && ( +
+ {props.isNeedSign + ? props.pos?.options?.hint || widgetTypeTraslation + : widgetTypeTraslation} +
+ )}
); case "checkbox": @@ -533,13 +552,20 @@ function PlaceholderType(props) { /> ) : (
- {props?.handleUserName && - props?.handleUserName( - props?.data?.Id, - props?.data?.Role, - widgetTypeTraslation, - props.pos - )} + {props.pos.type && ( +
+ {props.isNeedSign + ? props.pos?.options?.hint || widgetTypeTraslation + : widgetTypeTraslation} +
+ )}
); case "name": @@ -548,7 +574,7 @@ function PlaceholderType(props) { (props.isNeedSign && props.data?.signerObjId === props.signerObjId) ? (