render entity type for user permissions

This commit is contained in:
Mads Rasmussen
2023-09-26 14:21:45 +02:00
parent b2e198ea09
commit dfd63853fc

View File

@@ -5,6 +5,7 @@ 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';
@customElement('umb-user-group-default-permission-list')
export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement {
@@ -12,20 +13,24 @@ export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement {
private _userGroup?: UserGroupResponseModel;
@state()
private _userPermissionManifests: Array<ManifestUserPermission> = [];
private _groupedUserPermissionManifests: Record<string, Array<ManifestUserPermission>> = {};
#workspaceContext?: typeof UMB_USER_GROUP_WORKSPACE_CONTEXT.TYPE;
constructor() {
super();
this.#observeUserPermissions();
this.consumeContext(UMB_USER_GROUP_WORKSPACE_CONTEXT, (instance) => {
this.#workspaceContext = instance;
this.observe(this.#workspaceContext.data, (userGroup) => (this._userGroup = userGroup));
this.observe(
umbExtensionsRegistry.extensionsOfType('userPermission'),
(userPermissionManifests) => (this._userPermissionManifests = userPermissionManifests),
);
});
}
#observeUserPermissions() {
this.observe(umbExtensionsRegistry.extensionsOfType('userPermission'), (userPermissionManifests) => {
this._groupedUserPermissionManifests = groupBy(userPermissionManifests, (manifest) => manifest.meta.entityType);
});
}
@@ -36,12 +41,20 @@ export class UmbUserGroupDefaultPermissionListElement extends UmbLitElement {
}
#isAllowed(userPermissionManifest: ManifestUserPermission) {
console.log(this._userGroup?.permissions?.includes(userPermissionManifest.alias));
return this._userGroup?.permissions?.includes(userPermissionManifest.alias);
}
render() {
return html` ${this._userPermissionManifests.map((permission) => this.#renderPermission(permission))} `;
const entityGroups = [];
for (const [key, value] of Object.entries(this._groupedUserPermissionManifests)) {
entityGroups.push(
html`<h3>${key}</h3>
${value.map((permission) => this.#renderPermission(permission))}`,
);
}
return html`${entityGroups}`;
}
#renderPermission(userPermissionManifest: ManifestUserPermission) {