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 } }