fill assigned user if read level is own

This commit is contained in:
Yuri Kuznetsov
2024-05-02 10:59:58 +03:00
parent 157f03b38f
commit 40c8d0063d
+38 -27
View File
@@ -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.<string, *>} defaultHash