From fda38a8f3f98413bbc1194f506bb0b47eafa5ba1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 9 Apr 2024 22:01:39 +0200 Subject: [PATCH] use fallback permissions correctly --- .../document-user-permission.condition.ts | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) 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)); } }