diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts index 91a0e19528..9114748e2f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts @@ -58,18 +58,31 @@ export class UmbDocumentUserPermissionCondition if (!this.#entityType) return; if (this.#unique === undefined) return; - let verbs: Array = this.#fallbackPermissions; + const hasDocumentPermissions = this.#documentPermissions.length > 0; - if (this.#documentPermissions) { + // if there is no permissions for any documents we use the fallback permissions + if (!hasDocumentPermissions) { + this.#check(this.#fallbackPermissions); + return; + } + + if (hasDocumentPermissions) { const permissionsForCurrentDocument = this.#documentPermissions.find( (permission) => permission.document.id === this.#unique, ); - const currentDocumentVerbs = permissionsForCurrentDocument ? permissionsForCurrentDocument.verbs : []; - verbs = verbs.concat(currentDocumentVerbs); - } - const uniqueVerbs = [...new Set(verbs)]; - this.permitted = this.config.allOf.every((verb) => uniqueVerbs.includes(verb)); + // no permissions for the current document - use the fallback permissions + if (!permissionsForCurrentDocument) { + this.#check(this.#fallbackPermissions); + return; + } + + this.#check(permissionsForCurrentDocument.verbs); + } + } + + #check(verbs: Array) { + this.permitted = this.config.allOf.every((verb) => verbs.includes(verb)); } }