From c95ddd5aa1b7b71b24c4a3d86f5eb437c6ac7887 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 28 Sep 2023 12:51:59 +0200 Subject: [PATCH 1/3] render groups --- ...r-group-default-permission-list.element.ts | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts index b6920fc87c..08fcf1c5ff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts @@ -1,12 +1,12 @@ import { UMB_USER_GROUP_WORKSPACE_CONTEXT } from '../user-group-workspace.context.js'; -import { html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, state, ifDefined, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UserGroupResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { ManifestUserPermission, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import { groupBy } from '@umbraco-cms/backoffice/external/lodash'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; import { type UmbUserPermissionSettingElement } from '@umbraco-cms/backoffice/users'; +import { groupBy } from '@umbraco-cms/backoffice/external/lodash'; @customElement('umb-user-group-default-permission-list') export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement { @@ -52,14 +52,27 @@ export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement { } render() { - return html` ${this._entityTypes.map((entityType) => this.#renderPermissionsForEntityType(entityType))} `; + return html` ${this._entityTypes.map((entityType) => this.#renderPermissionsByEntityType(entityType))} `; } - #renderPermissionsForEntityType(entityType: string) { - return html`

${entityType}

- ${this._manifests - .filter((manifest) => manifest.meta.entityType === entityType) - .map((manifest) => this.#renderPermission(manifest))}`; + #renderPermissionsByEntityType(entityType: string) { + const permissionsForEntityType = this._manifests.filter((manifest) => manifest.meta.entityType === entityType); + return html` +

${entityType}

+ ${this.#renderGroupedPermissions(permissionsForEntityType)} + `; + } + + #renderGroupedPermissions(permissions: Array) { + const groupedPermissions = groupBy(permissions, (manifest) => manifest.meta.group); + return html` + ${Object.entries(groupedPermissions).map( + ([group, manifests]) => html` + ${group !== 'undefined' ? html`
${group}
` : nothing} + ${manifests.map((manifest) => html` ${this.#renderPermission(manifest)} `)} + `, + )} + `; } #renderPermission(manifest: ManifestUserPermission) { From fd47f13914e5f46dadf4ff6b73c4f22361ebb27c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 28 Sep 2023 13:03:53 +0200 Subject: [PATCH 2/3] translate permissions groups --- .../components/user-group-default-permission-list.element.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts index 08fcf1c5ff..cbe34a66d3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts @@ -68,7 +68,9 @@ export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement { return html` ${Object.entries(groupedPermissions).map( ([group, manifests]) => html` - ${group !== 'undefined' ? html`
${group}
` : nothing} + ${group !== 'undefined' + ? html`
${group}
` + : nothing} ${manifests.map((manifest) => html` ${this.#renderPermission(manifest)} `)} `, )} From dfb20aa4d77ae7cbfb8e6aca915dd5800427c9c8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 28 Sep 2023 14:07:05 +0200 Subject: [PATCH 3/3] localize uer permissions --- .../models/user-permission.model.ts | 4 +- .../documents/user-permissions/manifests.ts | 64 +++++++++---------- ...r-group-default-permission-list.element.ts | 12 ++-- 3 files changed, 42 insertions(+), 38 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/user-permission.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/user-permission.model.ts index 19825ab970..7a3b35a448 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/user-permission.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/user-permission.model.ts @@ -6,8 +6,10 @@ export interface ManifestUserPermission extends ManifestBase { } export interface MetaUserPermission { - label: string; entityType: string; + label?: string; + labelKey?: string; description?: string; + descriptionKey?: string; group?: string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts index f3269f9701..3b8dc13f4f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts @@ -27,8 +27,8 @@ const permissions: Array = [ name: 'Read Document User Permission', meta: { entityType: 'document', - label: 'Read', - description: 'Allow access to browse documents', + labelKey: 'actions_browse', + descriptionKey: 'actionDescriptions_browse', }, }, { @@ -37,8 +37,8 @@ const permissions: Array = [ name: 'Create Document Blueprint User Permission', meta: { entityType: 'document', - label: 'Create Content Template', - description: 'Allow access to create a Content Template', + labelKey: 'actions_createblueprint', + descriptionKey: 'actionDescriptions_createblueprint', }, }, { @@ -47,8 +47,8 @@ const permissions: Array = [ name: 'Delete Document User Permission', meta: { entityType: 'document', - label: 'Delete', - description: 'Allow access to delete a document', + labelKey: 'actions_delete', + descriptionKey: 'actionDescriptions_delete', }, }, { @@ -57,8 +57,8 @@ const permissions: Array = [ name: 'Create Document User Permission', meta: { entityType: 'document', - label: 'Create', - description: 'Allow access to create a document', + labelKey: 'actions_create', + descriptionKey: 'actionDescriptions_create', }, }, { @@ -67,8 +67,8 @@ const permissions: Array = [ name: 'Document Notifications User Permission', meta: { entityType: 'document', - label: 'Notifications', - description: 'Allow access to setup notifications for documents', + labelKey: 'actions_notify', + descriptionKey: 'actionDescriptions_notify', }, }, { @@ -77,8 +77,8 @@ const permissions: Array = [ name: 'Publish Document User Permission', meta: { entityType: 'document', - label: 'Publish', - description: 'Allow access to publish a document', + labelKey: 'actions_publish', + descriptionKey: 'actionDescriptions_publish', }, }, { @@ -87,8 +87,8 @@ const permissions: Array = [ name: 'Document Permissions User Permission', meta: { entityType: 'document', - label: 'Permissions', - description: 'Allow access to change permissions for a document', + labelKey: 'actions_setPermissions', + descriptionKey: 'actionDescriptions_rights', }, }, { @@ -97,8 +97,8 @@ const permissions: Array = [ name: 'Send Document For Approval User Permission', meta: { entityType: 'document', - label: 'Send For Approval', - description: 'Allow access to send a document for approval before publishing', + labelKey: 'actions_sendtopublish', + descriptionKey: 'actionDescriptions_sendtopublish', }, }, { @@ -107,8 +107,8 @@ const permissions: Array = [ name: 'Unpublish Document User Permission', meta: { entityType: 'document', - label: 'Unpublish', - description: 'Allow access to unpublish a document', + labelKey: 'actions_unpublish', + descriptionKey: 'actionDescriptions_unpublish', }, }, { @@ -117,8 +117,8 @@ const permissions: Array = [ name: 'Update Document User Permission', meta: { entityType: 'document', - label: 'Update', - description: 'Allow access to save a document', + labelKey: 'actions_update', + descriptionKey: 'actionDescriptions_update', }, }, { @@ -127,8 +127,8 @@ const permissions: Array = [ name: 'Copy Document User Permission', meta: { entityType: 'document', - label: 'Copy', - description: 'Allow access to copy a document', + labelKey: 'actions_copy', + descriptionKey: 'actionDescriptions_copy', group: 'structure', }, }, @@ -138,8 +138,8 @@ const permissions: Array = [ name: 'Move Document User Permission', meta: { entityType: 'document', - label: 'Move', - description: 'Allow access to move a document', + labelKey: 'actions_move', + descriptionKey: 'actionDescriptions_move', group: 'structure', }, }, @@ -149,8 +149,8 @@ const permissions: Array = [ name: 'Sort Document User Permission', meta: { entityType: 'document', - label: 'Sort', - description: 'Allow access to sort documents', + labelKey: 'actions_sort', + descriptionKey: 'actionDescriptions_sort', group: 'structure', }, }, @@ -160,8 +160,8 @@ const permissions: Array = [ name: 'Document Culture And Hostnames User Permission', meta: { entityType: 'document', - label: 'Culture And Hostnames', - description: 'Allow access to set culture and hostnames for documents', + labelKey: 'actions_assigndomain', + descriptionKey: 'actionDescriptions_assignDomain', group: 'administration', }, }, @@ -171,8 +171,8 @@ const permissions: Array = [ name: 'Document Public Access User Permission', meta: { entityType: 'document', - label: 'Public Access', - description: 'Allow access to set and change access restrictions for a document', + labelKey: 'actions_protect', + descriptionKey: 'actionDescriptions_protect', group: 'administration', }, }, @@ -182,8 +182,8 @@ const permissions: Array = [ name: 'Document Rollback User Permission', meta: { entityType: 'document', - label: 'Rollback', - description: 'Allow access to roll back a document to a previous state', + labelKey: 'actions_rollback', + descriptionKey: 'actionDescriptions_rollback', group: 'administration', }, }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts index cbe34a66d3..84d7880f9e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.ts @@ -47,8 +47,8 @@ export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement { : this.#userGroupWorkspaceContext?.removePermission(userPermissionManifest.alias); } - #isAllowed(userPermissionManifest: ManifestUserPermission) { - return this._userGroup?.permissions?.includes(userPermissionManifest.alias); + #isAllowed(permissionAlias: string) { + return this._userGroup?.permissions?.includes(permissionAlias); } render() { @@ -79,9 +79,11 @@ export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement { #renderPermission(manifest: ManifestUserPermission) { return html` this.#onChangeUserPermission(event, manifest)}>`; }