From 301ae290305039a5ac162a7e95dfea172a81ea36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C5=BEe=20Fortun?= Date: Mon, 8 Jul 2024 17:07:09 +0200 Subject: [PATCH] Fix required field validator not checking if field can be read by user, before throwing required field error --- client/web/compose/src/mixins/record.js | 4 +++- lib/js/src/compose/validators/record.ts | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/client/web/compose/src/mixins/record.js b/client/web/compose/src/mixins/record.js index 64a9b3806..2226433ea 100644 --- a/client/web/compose/src/mixins/record.js +++ b/client/web/compose/src/mixins/record.js @@ -384,8 +384,9 @@ export default { if (r.deletedAt) { return } + const fields = p.module.fields - .filter(({ canUpdateRecordValue }) => canUpdateRecordValue) + .filter(({ canReadRecordValue, canUpdateRecordValue }) => canReadRecordValue && canUpdateRecordValue) .map(({ name }) => name) // cover the edge case where all fields are not updatable @@ -397,6 +398,7 @@ export default { } } }) + this.errors.push(...errs.set) } } diff --git a/lib/js/src/compose/validators/record.ts b/lib/js/src/compose/validators/record.ts index b99cd2116..7f4dae2e7 100644 --- a/lib/js/src/compose/validators/record.ts +++ b/lib/js/src/compose/validators/record.ts @@ -23,7 +23,10 @@ function genericFieldValidator (field: ModuleField): ValidatorFn { const { value } = arg0 if (field.isRequired) { - if (value === undefined || IsEmpty(value)) { + const isNewRecord = this.recordID === NoID + const canManageFieldValue = isNewRecord ? true : field.canReadRecordValue && field.canUpdateRecordValue + + if ((value === undefined || IsEmpty(value)) && canManageFieldValue) { return emptyErr } }