diff --git a/CHANGELOG.md b/CHANGELOG.md index 93906aa0ec..afdd2a01a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,15 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v6.143.1](https://github.com/opengovsg/FormSG/compare/v6.143.0...v6.143.1) + +- fix(mrf): ensure number of non-editable fields are still present [`#7617`](https://github.com/opengovsg/FormSG/pull/7617) +- build: release v6.143.0 [`#7610`](https://github.com/opengovsg/FormSG/pull/7610) + #### [v6.143.0](https://github.com/opengovsg/FormSG/compare/v6.142.0...v6.143.0) +> 20 August 2024 + - feat: change nric mask toggle to nric collection toggle [`#7566`](https://github.com/opengovsg/FormSG/pull/7566) - fix(deps): bump type-fest from 4.24.0 to 4.25.0 in /shared [`#7606`](https://github.com/opengovsg/FormSG/pull/7606) - chore(deps-dev): bump elliptic from 6.5.4 to 6.5.7 in /frontend [`#7605`](https://github.com/opengovsg/FormSG/pull/7605) @@ -13,6 +20,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - fix(deps): bump libphonenumber-js from 1.11.5 to 1.11.7 in /shared [`#7603`](https://github.com/opengovsg/FormSG/pull/7603) - build: merge release v6.142.0 to develop [`#7602`](https://github.com/opengovsg/FormSG/pull/7602) - build: release v6.142.0 [`#7601`](https://github.com/opengovsg/FormSG/pull/7601) +- chore: bump version to v6.143.0 [`377e808`](https://github.com/opengovsg/FormSG/commit/377e808ba4c62f687f798bcf1fe7831e45768512) #### [v6.142.0](https://github.com/opengovsg/FormSG/compare/v6.141.0...v6.142.0) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 990a86ae15..7cc8ecb4df 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "form-frontend", - "version": "6.143.0", + "version": "6.143.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "form-frontend", - "version": "6.143.0", + "version": "6.143.1", "hasInstallScript": true, "dependencies": { "@chakra-ui/react": "^1.8.6", diff --git a/frontend/package.json b/frontend/package.json index 3df516afe1..f549301c71 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "form-frontend", - "version": "6.143.0", + "version": "6.143.1", "homepage": ".", "private": true, "dependencies": { diff --git a/package-lock.json b/package-lock.json index 547277e711..7ee54a4d52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "FormSG", - "version": "6.143.0", + "version": "6.143.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "FormSG", - "version": "6.143.0", + "version": "6.143.1", "hasInstallScript": true, "dependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.536.0", diff --git a/package.json b/package.json index 17aadb9fd5..43f74b84d0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "FormSG", "description": "Form Manager for Government", - "version": "6.143.0", + "version": "6.143.1", "homepage": "https://form.gov.sg", "authors": [ "FormSG " diff --git a/src/app/modules/submission/multirespondent-submission/multirespondent-submission.middleware.ts b/src/app/modules/submission/multirespondent-submission/multirespondent-submission.middleware.ts index 1ce6591dee..8338ee8542 100644 --- a/src/app/modules/submission/multirespondent-submission/multirespondent-submission.middleware.ts +++ b/src/app/modules/submission/multirespondent-submission/multirespondent-submission.middleware.ts @@ -424,6 +424,7 @@ export const validateMultirespondentSubmission = async ( ) .andThen(() => { // Step 3: Match non-editable response fields to previous version + const nonEditableFieldIdsWithResponses = Object.keys( req.body.responses, ).filter((fieldId) => !editableFieldIds.includes(fieldId)) @@ -461,6 +462,17 @@ export const validateMultirespondentSubmission = async ( const previousResponses = previousSubmissionDecryptedContent.responses as ParsedClearFormFieldResponsesV3 + const previousNonEditableFieldIdsWithResponses = Object.keys( + previousResponses, + ).filter((fieldId) => !editableFieldIds.includes(fieldId)) + + for (const fieldId of previousNonEditableFieldIdsWithResponses) { + // ensure that respondents cannot alter a non-editable field by omitting the field in the submission by re-inserting the previous fields that are non-editable + if (!req.body.responses[fieldId]) { + req.body.responses[fieldId] = previousResponses[fieldId] + } + } + return Result.combine( nonEditableFieldIdsWithResponses.map((fieldId) => { const incomingResField = req.body.responses[fieldId]