From 40c8d0063d305b9ecc250d795c76ed65cc7286fc Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 2 May 2024 10:59:58 +0300 Subject: [PATCH] fill assigned user if read level is own --- .../src/helpers/model/defaults-populator.js | 65 +++++++++++-------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/client/src/helpers/model/defaults-populator.js b/client/src/helpers/model/defaults-populator.js index 3e37486389..94671c8a20 100644 --- a/client/src/helpers/model/defaults-populator.js +++ b/client/src/helpers/model/defaults-populator.js @@ -79,8 +79,7 @@ class DefaultsPopulator { * @private */ prepare(model, defaultHash) { - const hasAssignedUsers = - model.hasField('assignedUsers') && + const hasAssignedUsers = model.hasField('assignedUsers') && model.getLinkParam('assignedUsers', 'entity') === 'User'; if (model.hasField('assignedUser') || hasAssignedUsers) { @@ -90,31 +89,7 @@ class DefaultsPopulator { assignedUserField = 'assignedUsers'; } - let fillAssignedUser = true; - - if (this.preferences.get('doNotFillAssignedUserIfNotRequired')) { - fillAssignedUser = false; - - if (model.getFieldParam(assignedUserField, 'required')) { - fillAssignedUser = true; - } - else if (this.acl.getPermissionLevel('assignmentPermission') === 'no') { - fillAssignedUser = true; - } - else if ( - this.acl.getPermissionLevel('assignmentPermission') === 'team' && - !this.user.get('defaultTeamId') - ) { - fillAssignedUser = true; - } - else if ( - !this.acl.checkField(model.entityType, assignedUserField, 'edit') - ) { - fillAssignedUser = true; - } - } - - if (fillAssignedUser) { + if (this.toFillAssignedUser(model, assignedUserField)) { if (hasAssignedUsers) { defaultHash['assignedUsersIds'] = [this.user.id]; defaultHash['assignedUsersNames'] = {}; @@ -142,6 +117,42 @@ class DefaultsPopulator { } } + /** + * + * @param {import('model').default} model + * @param {string} assignedUserField + */ + toFillAssignedUser(model, assignedUserField) { + if (!this.preferences.get('doNotFillAssignedUserIfNotRequired')) { + return true; + } + + if (model.getFieldParam(assignedUserField, 'required')) { + return true; + } + + if (this.acl.getPermissionLevel('assignmentPermission') === 'no') { + return true; + } + + if ( + this.acl.getPermissionLevel('assignmentPermission') === 'team' && + !this.user.get('defaultTeamId') + ) { + return true; + } + + if (this.acl.getLevel(model.entityType, 'read') === 'own') { + return true; + } + + if (!this.acl.checkField(model.entityType, assignedUserField, 'edit')) { + return true; + } + + return false; + } + /** * @param {module:model} model * @param {Object.} defaultHash