@umbraco-cms/backoffice 14.0.0-40e04294 → 14.0.0-45828375
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cms/apps/app/app.element.js +0 -3
- package/dist-cms/assets/lang/da-dk.js +3 -0
- package/dist-cms/assets/lang/da-dk.ts +3 -0
- package/dist-cms/assets/lang/en-us.js +21 -18
- package/dist-cms/assets/lang/en-us.ts +21 -18
- package/dist-cms/custom-elements.json +149 -19
- package/dist-cms/mocks/browser-handlers.js +1 -1
- package/dist-cms/mocks/data/entity.data.d.ts +1 -1
- package/dist-cms/mocks/data/entity.data.js +1 -9
- package/dist-cms/mocks/data/media.data.d.ts +2 -1
- package/dist-cms/mocks/data/media.data.js +11 -0
- package/dist-cms/mocks/data/user-group.data.d.ts +17 -0
- package/dist-cms/mocks/data/user-group.data.js +61 -0
- package/dist-cms/mocks/data/user.data.d.ts +15 -0
- package/dist-cms/mocks/data/{users.data.js → user.data.js} +27 -41
- package/dist-cms/mocks/handlers/dictionary.handlers.js +2 -2
- package/dist-cms/mocks/handlers/media.handlers.js +8 -0
- package/dist-cms/mocks/handlers/partial-views.handlers.js +3 -3
- package/dist-cms/mocks/handlers/user-group/collection.handlers.d.ts +1 -0
- package/dist-cms/mocks/handlers/user-group/collection.handlers.js +10 -0
- package/dist-cms/mocks/handlers/user-group/detail.handlers.d.ts +1 -0
- package/dist-cms/mocks/handlers/user-group/detail.handlers.js +37 -0
- package/dist-cms/mocks/handlers/user-group/index.js +4 -0
- package/dist-cms/mocks/handlers/user-group/item.handlers.d.ts +1 -0
- package/dist-cms/mocks/handlers/user-group/item.handlers.js +13 -0
- package/dist-cms/mocks/handlers/user-group/slug.d.ts +1 -0
- package/dist-cms/mocks/handlers/user-group/slug.js +1 -0
- package/dist-cms/mocks/handlers/user.handlers.js +15 -1
- package/dist-cms/packages/core/components/input-list-base/input-list-base.js +1 -1
- package/dist-cms/packages/core/components/input-section/input-section.element.d.ts +2 -2
- package/dist-cms/packages/core/components/input-section/input-section.element.js +5 -5
- package/dist-cms/packages/core/extension-registry/conditions/types.d.ts +3 -2
- package/dist-cms/packages/core/extension-registry/models/index.d.ts +5 -1
- package/dist-cms/packages/core/extension-registry/models/index.js +2 -0
- package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.d.ts +8 -0
- package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.js +1 -0
- package/dist-cms/packages/core/extension-registry/models/user-permission.model.d.ts +11 -0
- package/dist-cms/packages/core/extension-registry/models/user-permission.model.js +1 -0
- package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.d.ts +19 -0
- package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.js +97 -0
- package/dist-cms/packages/core/modal/common/manifests.js +6 -0
- package/dist-cms/packages/core/modal/common/tree-picker/tree-picker-modal.element.js +5 -3
- package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.d.ts +7 -0
- package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.js +4 -0
- package/dist-cms/packages/core/modal/token/index.d.ts +1 -0
- package/dist-cms/packages/core/modal/token/index.js +1 -0
- package/dist-cms/packages/core/picker-input/picker-input.context.js +1 -3
- package/dist-cms/packages/core/tree/tree.context.js +3 -2
- package/dist-cms/packages/documents/documents/components/index.d.ts +1 -0
- package/dist-cms/packages/documents/documents/components/index.js +1 -0
- package/dist-cms/packages/documents/documents/components/input-document/input-document.context.d.ts +6 -0
- package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +7 -0
- package/dist-cms/packages/documents/documents/components/input-document/input-document.element.d.ts +7 -12
- package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +51 -64
- package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.d.ts +23 -0
- package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.js +102 -0
- package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +9 -0
- package/dist-cms/packages/documents/documents/entity-actions/manifests.js +1 -1
- package/dist-cms/packages/documents/documents/entity-actions/permissions.action.d.ts +2 -1
- package/dist-cms/packages/documents/documents/entity-actions/permissions.action.js +22 -2
- package/dist-cms/packages/documents/documents/index.d.ts +2 -0
- package/dist-cms/packages/documents/documents/index.js +2 -0
- package/dist-cms/packages/documents/documents/manifests.d.ts +4 -0
- package/dist-cms/packages/documents/documents/manifests.js +2 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.d.ts +4 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +6 -0
- package/dist-cms/packages/documents/documents/recycle-bin/manifests.d.ts +4 -0
- package/dist-cms/packages/documents/documents/repository/document.repository.js +4 -4
- package/dist-cms/packages/documents/documents/repository/manifests.d.ts +3 -2
- package/dist-cms/packages/documents/documents/repository/manifests.js +9 -1
- package/dist-cms/packages/documents/documents/user-permissions/index.d.ts +1 -0
- package/dist-cms/packages/documents/documents/user-permissions/index.js +1 -0
- package/dist-cms/packages/documents/documents/user-permissions/manifests.d.ts +19 -0
- package/dist-cms/packages/documents/documents/user-permissions/manifests.js +196 -0
- package/dist-cms/packages/documents/manifests.d.ts +4 -0
- package/dist-cms/packages/media/manifests.d.ts +2 -1
- package/dist-cms/packages/media/manifests.js +1 -0
- package/dist-cms/packages/media/media/components/index.d.ts +1 -0
- package/dist-cms/packages/media/media/components/index.js +1 -0
- package/dist-cms/packages/media/media/components/input-media/input-media.context.d.ts +6 -0
- package/dist-cms/packages/media/media/components/input-media/input-media.context.js +7 -0
- package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +7 -15
- package/dist-cms/packages/media/media/components/input-media/input-media.element.js +50 -72
- package/dist-cms/packages/media/media/index.d.ts +2 -0
- package/dist-cms/packages/media/media/index.js +1 -1
- package/dist-cms/packages/media/media/manifests.d.ts +1 -1
- package/dist-cms/packages/media/media/manifests.js +2 -0
- package/dist-cms/packages/media/media/repository/manifests.d.ts +3 -2
- package/dist-cms/packages/media/media/repository/manifests.js +9 -1
- package/dist-cms/packages/media/media/repository/media-item.store.d.ts +20 -0
- package/dist-cms/packages/media/media/repository/media-item.store.js +23 -0
- package/dist-cms/packages/media/media/repository/media.repository.d.ts +6 -0
- package/dist-cms/packages/media/media/repository/media.repository.js +22 -0
- package/dist-cms/packages/media/media/repository/sources/media-item.server.data.d.ts +24 -0
- package/dist-cms/packages/media/media/repository/sources/media-item.server.data.js +31 -0
- package/dist-cms/packages/media/media/user-permissions/index.d.ts +1 -0
- package/dist-cms/packages/media/media/user-permissions/index.js +1 -0
- package/dist-cms/packages/media/media/user-permissions/manifests.d.ts +4 -0
- package/dist-cms/packages/media/media/user-permissions/manifests.js +27 -0
- package/dist-cms/packages/users/current-user/conditions/index.d.ts +1 -0
- package/dist-cms/packages/users/current-user/conditions/index.js +1 -0
- package/dist-cms/packages/users/current-user/conditions/user-permission.condition.d.ts +18 -0
- package/dist-cms/packages/users/current-user/conditions/user-permission.condition.js +23 -0
- package/dist-cms/packages/users/current-user/index.d.ts +1 -0
- package/dist-cms/packages/users/current-user/index.js +1 -0
- package/dist-cms/packages/users/current-user/manifests.js +7 -1
- package/dist-cms/packages/users/current-user/modals/current-user/current-user-modal.element.js +7 -7
- package/dist-cms/packages/users/index.d.ts +4 -2
- package/dist-cms/packages/users/index.js +4 -2
- package/dist-cms/packages/users/manifests.d.ts +2 -0
- package/dist-cms/packages/users/manifests.js +3 -0
- package/dist-cms/packages/users/user-groups/collection/user-group-collection-header.element.js +2 -2
- package/dist-cms/packages/users/user-groups/collection/user-group-collection-view.element.js +6 -6
- package/dist-cms/packages/users/user-groups/components/index.d.ts +1 -0
- package/dist-cms/packages/users/user-groups/components/index.js +1 -0
- package/dist-cms/packages/users/user-groups/entity-actions/manifests.d.ts +2 -0
- package/dist-cms/packages/users/user-groups/entity-actions/manifests.js +19 -0
- package/dist-cms/packages/users/user-groups/index.d.ts +2 -0
- package/dist-cms/packages/users/user-groups/index.js +2 -0
- package/dist-cms/packages/users/user-groups/manifests.d.ts +1 -1
- package/dist-cms/packages/users/user-groups/manifests.js +2 -0
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.d.ts +16 -0
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.js +69 -0
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.d.ts +14 -0
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.js +31 -0
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.d.ts +2 -0
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.js +57 -56
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.d.ts +12 -0
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.js +20 -0
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.element.js +1 -1
- package/dist-cms/packages/users/users/collection/user-collection-header.element.js +18 -11
- package/dist-cms/packages/users/users/collection/views/grid/user-collection-grid-view.element.js +6 -6
- package/dist-cms/packages/users/users/collection/views/table/column-layouts/status/user-table-status-column-layout.element.js +3 -3
- package/dist-cms/packages/users/users/components/index.d.ts +3 -0
- package/dist-cms/packages/users/users/components/index.js +3 -0
- package/dist-cms/packages/users/users/components/user-input/user-input.element.js +2 -2
- package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.d.ts +15 -0
- package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.js +66 -0
- package/dist-cms/packages/users/users/index.d.ts +2 -0
- package/dist-cms/packages/users/users/index.js +2 -0
- package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.d.ts +3 -1
- package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.js +20 -25
- package/dist-cms/packages/users/users/repository/index.d.ts +1 -0
- package/dist-cms/packages/users/users/repository/index.js +1 -0
- package/dist-cms/packages/users/users/repository/user.repository.js +1 -1
- package/dist-cms/packages/users/users/workspace/user-workspace-editor.element.js +73 -56
- package/dist-cms/packages/users/utils.d.ts +5 -2
- package/dist-cms/packages/users/utils.js +14 -14
- package/dist-cms/shared/auth/auth-flow.d.ts +0 -4
- package/dist-cms/shared/auth/auth-flow.js +6 -25
- package/dist-cms/shared/repository/repository-items.manager.js +5 -0
- package/dist-cms/shared/umb-events/index.d.ts +1 -0
- package/dist-cms/shared/umb-events/index.js +1 -0
- package/dist-cms/shared/umb-events/selected.event.d.ts +3 -0
- package/dist-cms/shared/umb-events/selected.event.js +6 -0
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/umbraco-package-schema.json +154 -0
- package/dist-cms/vscode-html-custom-data.json +66 -18
- package/package.json +1 -1
- package/dist-cms/mocks/data/user-groups.data.d.ts +0 -9
- package/dist-cms/mocks/data/user-groups.data.js +0 -21
- package/dist-cms/mocks/data/users.data.d.ts +0 -16
- package/dist-cms/mocks/handlers/user-group.handlers.js +0 -17
- /package/dist-cms/mocks/handlers/{user-group.handlers.d.ts → user-group/index.d.ts} +0 -0
|
@@ -2,6 +2,7 @@ import { UmbMediaTreeServerDataSource } from './sources/media.tree.server.data.j
|
|
|
2
2
|
import { UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN } from './media.tree.store.js';
|
|
3
3
|
import { UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store.js';
|
|
4
4
|
import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data.js';
|
|
5
|
+
import { UmbMediaItemServerDataSource } from './sources/media-item.server.data.js';
|
|
5
6
|
import { UmbContextConsumerController } from '../../../../libs/context-api/index.js';
|
|
6
7
|
import { UMB_NOTIFICATION_CONTEXT_TOKEN } from '../../../core/notification/index.js';
|
|
7
8
|
export class UmbMediaRepository {
|
|
@@ -11,12 +12,15 @@ export class UmbMediaRepository {
|
|
|
11
12
|
#treeStore;
|
|
12
13
|
#detailDataSource;
|
|
13
14
|
#store;
|
|
15
|
+
#itemSource;
|
|
16
|
+
#itemStore;
|
|
14
17
|
#notificationContext;
|
|
15
18
|
constructor(host) {
|
|
16
19
|
this.#host = host;
|
|
17
20
|
// TODO: figure out how spin up get the correct data source
|
|
18
21
|
this.#treeSource = new UmbMediaTreeServerDataSource(this.#host);
|
|
19
22
|
this.#detailDataSource = new UmbMediaDetailServerDataSource(this.#host);
|
|
23
|
+
this.#itemSource = new UmbMediaItemServerDataSource(this.#host);
|
|
20
24
|
this.#init = Promise.all([
|
|
21
25
|
new UmbContextConsumerController(this.#host, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN, (instance) => {
|
|
22
26
|
this.#treeStore = instance;
|
|
@@ -24,6 +28,9 @@ export class UmbMediaRepository {
|
|
|
24
28
|
new UmbContextConsumerController(this.#host, UMB_MEDIA_STORE_CONTEXT_TOKEN, (instance) => {
|
|
25
29
|
this.#store = instance;
|
|
26
30
|
}).asPromise(),
|
|
31
|
+
new UmbContextConsumerController(this.#host, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN, (instance) => {
|
|
32
|
+
this.#itemStore = instance;
|
|
33
|
+
}).asPromise(),
|
|
27
34
|
new UmbContextConsumerController(this.#host, UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => {
|
|
28
35
|
this.#notificationContext = instance;
|
|
29
36
|
}).asPromise(),
|
|
@@ -79,6 +86,21 @@ export class UmbMediaRepository {
|
|
|
79
86
|
await this.#init;
|
|
80
87
|
return this.#treeStore.items(ids);
|
|
81
88
|
}
|
|
89
|
+
// ITEMS:
|
|
90
|
+
async requestItems(ids) {
|
|
91
|
+
if (!ids)
|
|
92
|
+
throw new Error('Keys are missing');
|
|
93
|
+
await this.#init;
|
|
94
|
+
const { data, error } = await this.#itemSource.getItems(ids);
|
|
95
|
+
if (data) {
|
|
96
|
+
this.#itemStore?.appendItems(data);
|
|
97
|
+
}
|
|
98
|
+
return { data, error, asObservable: () => this.#itemStore.items(ids) };
|
|
99
|
+
}
|
|
100
|
+
async items(ids) {
|
|
101
|
+
await this.#init;
|
|
102
|
+
return this.#itemStore.items(ids);
|
|
103
|
+
}
|
|
82
104
|
// DETAILS:
|
|
83
105
|
async createScaffold(parentId) {
|
|
84
106
|
if (parentId === undefined)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { UmbItemDataSource } from '../../../../../shared/repository/index.js';
|
|
2
|
+
import { MediaItemResponseModel } from '../../../../../external/backend-api/index.js';
|
|
3
|
+
import { UmbControllerHostElement } from '../../../../../libs/controller-api/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* A data source for Media items that fetches data from the server
|
|
6
|
+
* @export
|
|
7
|
+
* @class UmbMediaItemServerDataSource
|
|
8
|
+
* @implements {MediaItemDataSource}
|
|
9
|
+
*/
|
|
10
|
+
export declare class UmbMediaItemServerDataSource implements UmbItemDataSource<MediaItemResponseModel> {
|
|
11
|
+
#private;
|
|
12
|
+
/**
|
|
13
|
+
* Creates an instance of UmbMediaItemServerDataSource.
|
|
14
|
+
* @param {UmbControllerHostElement} host
|
|
15
|
+
* @memberof UmbMediaItemServerDataSource
|
|
16
|
+
*/
|
|
17
|
+
constructor(host: UmbControllerHostElement);
|
|
18
|
+
/**
|
|
19
|
+
* Fetches the items for the given ids from the server
|
|
20
|
+
* @param {Array<string>} ids
|
|
21
|
+
* @memberof UmbMediaItemServerDataSource
|
|
22
|
+
*/
|
|
23
|
+
getItems(ids: Array<string>): Promise<import("../../../../../shared/repository/index.js").DataSourceResponse<MediaItemResponseModel[]>>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { MediaResource } from '../../../../../external/backend-api/index.js';
|
|
2
|
+
import { tryExecuteAndNotify } from '../../../../../shared/resources/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* A data source for Media items that fetches data from the server
|
|
5
|
+
* @export
|
|
6
|
+
* @class UmbMediaItemServerDataSource
|
|
7
|
+
* @implements {MediaItemDataSource}
|
|
8
|
+
*/
|
|
9
|
+
export class UmbMediaItemServerDataSource {
|
|
10
|
+
#host;
|
|
11
|
+
/**
|
|
12
|
+
* Creates an instance of UmbMediaItemServerDataSource.
|
|
13
|
+
* @param {UmbControllerHostElement} host
|
|
14
|
+
* @memberof UmbMediaItemServerDataSource
|
|
15
|
+
*/
|
|
16
|
+
constructor(host) {
|
|
17
|
+
this.#host = host;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Fetches the items for the given ids from the server
|
|
21
|
+
* @param {Array<string>} ids
|
|
22
|
+
* @memberof UmbMediaItemServerDataSource
|
|
23
|
+
*/
|
|
24
|
+
async getItems(ids) {
|
|
25
|
+
if (!ids)
|
|
26
|
+
throw new Error('Ids are missing');
|
|
27
|
+
return tryExecuteAndNotify(this.#host, MediaResource.getMediaItem({
|
|
28
|
+
id: ids,
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './manifests.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './manifests.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ManifestUserPermission } from '../../../core/extension-registry/index.js';
|
|
2
|
+
export declare const UMB_USER_PERMISSION_MEDIA_MOVE = "Umb.UserPermission.Media.Move";
|
|
3
|
+
export declare const UMB_USER_PERMISSION_MEDIA_COPY = "Umb.UserPermission.Media.Copy";
|
|
4
|
+
export declare const manifests: ManifestUserPermission[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const UMB_USER_PERMISSION_MEDIA_MOVE = 'Umb.UserPermission.Media.Move';
|
|
2
|
+
export const UMB_USER_PERMISSION_MEDIA_COPY = 'Umb.UserPermission.Media.Copy';
|
|
3
|
+
const permissions = [
|
|
4
|
+
{
|
|
5
|
+
type: 'userPermission',
|
|
6
|
+
alias: UMB_USER_PERMISSION_MEDIA_MOVE,
|
|
7
|
+
name: 'Move Media Item User Permission',
|
|
8
|
+
meta: {
|
|
9
|
+
entityType: 'media',
|
|
10
|
+
label: 'Move',
|
|
11
|
+
description: 'Allow access to move media items',
|
|
12
|
+
group: 'structure',
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
type: 'userPermission',
|
|
17
|
+
alias: UMB_USER_PERMISSION_MEDIA_COPY,
|
|
18
|
+
name: 'Copy Media Item User Permission',
|
|
19
|
+
meta: {
|
|
20
|
+
entityType: 'media',
|
|
21
|
+
label: 'Copy',
|
|
22
|
+
description: 'Allow access to copy a media item',
|
|
23
|
+
group: 'structure',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
export const manifests = [...permissions];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './user-permission.condition.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './user-permission.condition.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UmbBaseController } from '../../../../libs/controller-api/index.js';
|
|
2
|
+
import { ManifestCondition, UmbConditionConfigBase, UmbConditionControllerArguments, UmbExtensionCondition } from '../../../../libs/extension-api/index.js';
|
|
3
|
+
export declare class UmbUserPermissionCondition extends UmbBaseController implements UmbExtensionCondition {
|
|
4
|
+
#private;
|
|
5
|
+
config: UserPermissionConditionConfig;
|
|
6
|
+
permitted: boolean;
|
|
7
|
+
constructor(args: UmbConditionControllerArguments<UserPermissionConditionConfig>);
|
|
8
|
+
}
|
|
9
|
+
export type UserPermissionConditionConfig = UmbConditionConfigBase<'Umb.Condition.UserPermission'> & {
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* "Umb.UserPermission.Document.Create"
|
|
15
|
+
*/
|
|
16
|
+
match: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const manifest: ManifestCondition;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UMB_AUTH } from '../../../../shared/auth/index.js';
|
|
2
|
+
import { UmbBaseController } from '../../../../libs/controller-api/index.js';
|
|
3
|
+
export class UmbUserPermissionCondition extends UmbBaseController {
|
|
4
|
+
#onChange;
|
|
5
|
+
constructor(args) {
|
|
6
|
+
super(args.host);
|
|
7
|
+
this.permitted = false;
|
|
8
|
+
this.config = args.config;
|
|
9
|
+
this.#onChange = args.onChange;
|
|
10
|
+
this.consumeContext(UMB_AUTH, (context) => {
|
|
11
|
+
this.observe(context.currentUser, (currentUser) => {
|
|
12
|
+
this.permitted = currentUser?.permissions?.includes(this.config.match) || false;
|
|
13
|
+
this.#onChange();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export const manifest = {
|
|
19
|
+
type: 'condition',
|
|
20
|
+
name: 'User Permission Condition',
|
|
21
|
+
alias: 'Umb.Condition.UserPermission',
|
|
22
|
+
class: UmbUserPermissionCondition,
|
|
23
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { manifests as modalManifests } from './modals/manifests.js';
|
|
2
2
|
import { manifests as userProfileAppsManifests } from './user-profile-apps/manifests.js';
|
|
3
|
+
import { manifest as userPermissionConditionManifest } from './conditions/user-permission.condition.js';
|
|
3
4
|
export const headerApps = [
|
|
4
5
|
{
|
|
5
6
|
type: 'store',
|
|
@@ -20,4 +21,9 @@ export const headerApps = [
|
|
|
20
21
|
},
|
|
21
22
|
},
|
|
22
23
|
];
|
|
23
|
-
export const manifests = [
|
|
24
|
+
export const manifests = [
|
|
25
|
+
...headerApps,
|
|
26
|
+
...modalManifests,
|
|
27
|
+
...userProfileAppsManifests,
|
|
28
|
+
userPermissionConditionManifest,
|
|
29
|
+
];
|
package/dist-cms/packages/users/current-user/modals/current-user/current-user-modal.element.js
CHANGED
|
@@ -10,12 +10,12 @@ import { UmbTextStyles } from '../../../../../shared/style/index.js';
|
|
|
10
10
|
import { css, html, customElement, property, state } from '../../../../../external/lit/index.js';
|
|
11
11
|
import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
|
|
12
12
|
export let UmbCurrentUserModalElement = class UmbCurrentUserModalElement extends UmbLitElement {
|
|
13
|
-
#
|
|
13
|
+
#authContext;
|
|
14
14
|
#appContext;
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
17
|
this.consumeContext(UMB_AUTH, (instance) => {
|
|
18
|
-
this.#
|
|
18
|
+
this.#authContext = instance;
|
|
19
19
|
this._observeCurrentUser();
|
|
20
20
|
});
|
|
21
21
|
this.consumeContext(UMB_APP, (instance) => {
|
|
@@ -23,9 +23,9 @@ export let UmbCurrentUserModalElement = class UmbCurrentUserModalElement extends
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
async _observeCurrentUser() {
|
|
26
|
-
if (!this.#
|
|
26
|
+
if (!this.#authContext)
|
|
27
27
|
return;
|
|
28
|
-
this.observe(this.#
|
|
28
|
+
this.observe(this.#authContext.currentUser, (currentUser) => {
|
|
29
29
|
this._currentUser = currentUser;
|
|
30
30
|
});
|
|
31
31
|
}
|
|
@@ -33,10 +33,10 @@ export let UmbCurrentUserModalElement = class UmbCurrentUserModalElement extends
|
|
|
33
33
|
this.modalContext?.submit();
|
|
34
34
|
}
|
|
35
35
|
async _logout() {
|
|
36
|
-
if (!this.#
|
|
36
|
+
if (!this.#authContext)
|
|
37
37
|
return;
|
|
38
|
-
this.#
|
|
39
|
-
await this.#
|
|
38
|
+
this.#authContext.performWithFreshTokens;
|
|
39
|
+
await this.#authContext.signOut();
|
|
40
40
|
let newUrl = this.#appContext ? `${this.#appContext.getBackofficePath()}/login` : '/';
|
|
41
41
|
newUrl = newUrl.replace(/\/\//g, '/');
|
|
42
42
|
location.href = newUrl;
|
|
@@ -2,4 +2,7 @@ import { manifests as userGroupManifests } from './user-groups/manifests.js';
|
|
|
2
2
|
import { manifests as userManifests } from './users/manifests.js';
|
|
3
3
|
import { manifests as userSectionManifests } from './user-section/manifests.js';
|
|
4
4
|
import { manifests as currentUserManifests } from './current-user/manifests.js';
|
|
5
|
+
// We need to load any components that are not loaded by the user management bundle to register them in the browser.
|
|
6
|
+
import './user-groups/components/index.js';
|
|
7
|
+
import './users/components/index.js';
|
|
5
8
|
export const manifests = [...userGroupManifests, ...userManifests, ...userSectionManifests, ...currentUserManifests];
|
package/dist-cms/packages/users/user-groups/collection/user-group-collection-header.element.js
CHANGED
|
@@ -23,8 +23,8 @@ export let UmbUserGroupCollectionHeaderElement = class UmbUserGroupCollectionHea
|
|
|
23
23
|
}
|
|
24
24
|
render() {
|
|
25
25
|
return html `
|
|
26
|
-
<uui-button @click=${this.#onCreate} label
|
|
27
|
-
<uui-input @input=${this.#onSearch} label
|
|
26
|
+
<uui-button @click=${this.#onCreate} label=${this.localize.term('actions_createGroup')} look="outline"></uui-button>
|
|
27
|
+
<uui-input @input=${this.#onSearch} label=${this.localize.term('general_search')} placeholder=${this.localize.term('visuallyHiddenTexts_userGroupSearchLabel')} id="input-search"></uui-input>
|
|
28
28
|
`;
|
|
29
29
|
}
|
|
30
30
|
static { this.styles = [
|
package/dist-cms/packages/users/user-groups/collection/user-group-collection-view.element.js
CHANGED
|
@@ -19,21 +19,21 @@ export let UmbUserGroupCollectionViewElement = class UmbUserGroupCollectionViewE
|
|
|
19
19
|
};
|
|
20
20
|
this._tableColumns = [
|
|
21
21
|
{
|
|
22
|
-
name: '
|
|
22
|
+
name: this.localize.term('general_name'),
|
|
23
23
|
alias: 'userGroupName',
|
|
24
24
|
elementName: 'umb-user-group-table-name-column-layout',
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
name: '
|
|
27
|
+
name: this.localize.term('main_sections'),
|
|
28
28
|
alias: 'userGroupSections',
|
|
29
29
|
elementName: 'umb-user-group-table-sections-column-layout',
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
name: '
|
|
32
|
+
name: this.localize.term('user_startnode'),
|
|
33
33
|
alias: 'userGroupContentStartNode',
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
name: '
|
|
36
|
+
name: this.localize.term('user_mediastartnode'),
|
|
37
37
|
alias: 'userGroupMediaStartNode',
|
|
38
38
|
},
|
|
39
39
|
];
|
|
@@ -67,11 +67,11 @@ export let UmbUserGroupCollectionViewElement = class UmbUserGroupCollectionViewE
|
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
columnAlias: 'userGroupContentStartNode',
|
|
70
|
-
value: userGroup.documentStartNodeId || '
|
|
70
|
+
value: userGroup.documentStartNodeId || this.localize.term('content_contentRoot'),
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
columnAlias: 'userGroupMediaStartNode',
|
|
74
|
-
value: userGroup.mediaStartNodeId || '
|
|
74
|
+
value: userGroup.mediaStartNodeId || this.localize.term('media_mediaRoot'),
|
|
75
75
|
},
|
|
76
76
|
],
|
|
77
77
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { USER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests.js';
|
|
2
|
+
import { UMB_USER_GROUP_ENTITY_TYPE } from '../index.js';
|
|
3
|
+
import { UmbDeleteEntityAction } from '../../../core/entity-action/index.js';
|
|
4
|
+
const entityActions = [
|
|
5
|
+
{
|
|
6
|
+
type: 'entityAction',
|
|
7
|
+
alias: 'Umb.EntityAction.UserGroup.Delete',
|
|
8
|
+
name: 'Delete User Group Entity Action',
|
|
9
|
+
weight: 900,
|
|
10
|
+
meta: {
|
|
11
|
+
icon: 'umb:trash',
|
|
12
|
+
label: 'Delete...',
|
|
13
|
+
repositoryAlias: USER_GROUP_REPOSITORY_ALIAS,
|
|
14
|
+
api: UmbDeleteEntityAction,
|
|
15
|
+
entityTypes: [UMB_USER_GROUP_ENTITY_TYPE],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
export const manifests = [...entityActions];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const manifests:
|
|
1
|
+
export declare const manifests: import("../../core/index.js").ManifestTypes[];
|
|
@@ -2,11 +2,13 @@ import { manifests as repositoryManifests } from './repository/manifests.js';
|
|
|
2
2
|
import { manifests as workspaceManifests } from './workspace/manifests.js';
|
|
3
3
|
import { manifests as modalManifests } from './modals/manifests.js';
|
|
4
4
|
import { manifests as sectionViewManifests } from './section-view/manifests.js';
|
|
5
|
+
import { manifests as entityActionManifests } from './entity-actions/manifests.js';
|
|
5
6
|
import { manifests as entityBulkActionManifests } from './entity-bulk-actions/manifests.js';
|
|
6
7
|
export const manifests = [
|
|
7
8
|
...repositoryManifests,
|
|
8
9
|
...workspaceManifests,
|
|
9
10
|
...modalManifests,
|
|
10
11
|
...sectionViewManifests,
|
|
12
|
+
...entityActionManifests,
|
|
11
13
|
...entityBulkActionManifests,
|
|
12
14
|
];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
|
|
2
|
+
export declare class UmbUserGroupDefaultPermissionListElement extends UmbLitElement {
|
|
3
|
+
#private;
|
|
4
|
+
private _userGroup?;
|
|
5
|
+
private _manifests;
|
|
6
|
+
private _entityTypes;
|
|
7
|
+
constructor();
|
|
8
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
9
|
+
static styles: import("@lit/reactive-element/css-tag.js").CSSResult[];
|
|
10
|
+
}
|
|
11
|
+
export default UmbUserGroupDefaultPermissionListElement;
|
|
12
|
+
declare global {
|
|
13
|
+
interface HTMLElementTagNameMap {
|
|
14
|
+
'umb-user-group-default-permission-list': UmbUserGroupDefaultPermissionListElement;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { UMB_USER_GROUP_WORKSPACE_CONTEXT } from '../user-group-workspace.context.js';
|
|
8
|
+
import { html, customElement, state, ifDefined } from '../../../../../external/lit/index.js';
|
|
9
|
+
import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
|
|
10
|
+
import { UmbTextStyles } from '../../../../../shared/style/index.js';
|
|
11
|
+
import { umbExtensionsRegistry } from '../../../../core/extension-registry/index.js';
|
|
12
|
+
export let UmbUserGroupDefaultPermissionListElement = class UmbUserGroupDefaultPermissionListElement extends UmbLitElement {
|
|
13
|
+
#userGroupWorkspaceContext;
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this._manifests = [];
|
|
17
|
+
this._entityTypes = [];
|
|
18
|
+
this.#observeUserPermissions();
|
|
19
|
+
this.consumeContext(UMB_USER_GROUP_WORKSPACE_CONTEXT, (instance) => {
|
|
20
|
+
this.#userGroupWorkspaceContext = instance;
|
|
21
|
+
this.observe(this.#userGroupWorkspaceContext.data, (userGroup) => (this._userGroup = userGroup));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
#observeUserPermissions() {
|
|
25
|
+
this.observe(umbExtensionsRegistry.extensionsOfType('userPermission'), (userPermissionManifests) => {
|
|
26
|
+
this._manifests = userPermissionManifests;
|
|
27
|
+
this._entityTypes = [...new Set(userPermissionManifests.map((manifest) => manifest.meta.entityType))];
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
#onChangeUserPermission(event, userPermissionManifest) {
|
|
31
|
+
const target = event.target;
|
|
32
|
+
target.allowed
|
|
33
|
+
? this.#userGroupWorkspaceContext?.addPermission(userPermissionManifest.alias)
|
|
34
|
+
: this.#userGroupWorkspaceContext?.removePermission(userPermissionManifest.alias);
|
|
35
|
+
}
|
|
36
|
+
#isAllowed(userPermissionManifest) {
|
|
37
|
+
return this._userGroup?.permissions?.includes(userPermissionManifest.alias);
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
return html ` ${this._entityTypes.map((entityType) => this.#renderPermissionsForEntityType(entityType))} `;
|
|
41
|
+
}
|
|
42
|
+
#renderPermissionsForEntityType(entityType) {
|
|
43
|
+
return html ` <h4><umb-localize .key=${`user_permissionsEntityGroup_${entityType}`}>${entityType}</umb-localize></h4>
|
|
44
|
+
${this._manifests
|
|
45
|
+
.filter((manifest) => manifest.meta.entityType === entityType)
|
|
46
|
+
.map((manifest) => this.#renderPermission(manifest))}`;
|
|
47
|
+
}
|
|
48
|
+
#renderPermission(manifest) {
|
|
49
|
+
return html ` <umb-user-permission-setting
|
|
50
|
+
label=${manifest.meta.label}
|
|
51
|
+
description=${ifDefined(manifest.meta.description)}
|
|
52
|
+
?allowed=${this.#isAllowed(manifest)}
|
|
53
|
+
@change=${(event) => this.#onChangeUserPermission(event, manifest)}></umb-user-permission-setting>`;
|
|
54
|
+
}
|
|
55
|
+
static { this.styles = [UmbTextStyles]; }
|
|
56
|
+
};
|
|
57
|
+
__decorate([
|
|
58
|
+
state()
|
|
59
|
+
], UmbUserGroupDefaultPermissionListElement.prototype, "_userGroup", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
state()
|
|
62
|
+
], UmbUserGroupDefaultPermissionListElement.prototype, "_manifests", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
state()
|
|
65
|
+
], UmbUserGroupDefaultPermissionListElement.prototype, "_entityTypes", void 0);
|
|
66
|
+
UmbUserGroupDefaultPermissionListElement = __decorate([
|
|
67
|
+
customElement('umb-user-group-default-permission-list')
|
|
68
|
+
], UmbUserGroupDefaultPermissionListElement);
|
|
69
|
+
export default UmbUserGroupDefaultPermissionListElement;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
|
|
2
|
+
export declare class UmbUserGroupGranularPermissionListElement extends UmbLitElement {
|
|
3
|
+
#private;
|
|
4
|
+
private _userGroup?;
|
|
5
|
+
constructor();
|
|
6
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
7
|
+
static styles: import("@lit/reactive-element/css-tag.js").CSSResult[];
|
|
8
|
+
}
|
|
9
|
+
export default UmbUserGroupGranularPermissionListElement;
|
|
10
|
+
declare global {
|
|
11
|
+
interface HTMLElementTagNameMap {
|
|
12
|
+
'umb-user-group-granular-permission-list': UmbUserGroupGranularPermissionListElement;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { UMB_USER_GROUP_WORKSPACE_CONTEXT } from '../user-group-workspace.context.js';
|
|
8
|
+
import { css, html, customElement, state } from '../../../../../external/lit/index.js';
|
|
9
|
+
import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
|
|
10
|
+
import { UmbTextStyles } from '../../../../../shared/style/index.js';
|
|
11
|
+
export let UmbUserGroupGranularPermissionListElement = class UmbUserGroupGranularPermissionListElement extends UmbLitElement {
|
|
12
|
+
#workspaceContext;
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
this.consumeContext(UMB_USER_GROUP_WORKSPACE_CONTEXT, (instance) => {
|
|
16
|
+
this.#workspaceContext = instance;
|
|
17
|
+
this.observe(this.#workspaceContext.data, (userGroup) => (this._userGroup = userGroup));
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
render() {
|
|
21
|
+
return html `<umb-extension-slot type="userGranularPermission"></umb-extension-slot>`;
|
|
22
|
+
}
|
|
23
|
+
static { this.styles = [UmbTextStyles, css ``]; }
|
|
24
|
+
};
|
|
25
|
+
__decorate([
|
|
26
|
+
state()
|
|
27
|
+
], UmbUserGroupGranularPermissionListElement.prototype, "_userGroup", void 0);
|
|
28
|
+
UmbUserGroupGranularPermissionListElement = __decorate([
|
|
29
|
+
customElement('umb-user-group-granular-permission-list')
|
|
30
|
+
], UmbUserGroupGranularPermissionListElement);
|
|
31
|
+
export default UmbUserGroupGranularPermissionListElement;
|
package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { nothing } from '../../../../external/lit/index.js';
|
|
2
2
|
import { UmbLitElement } from '../../../../shared/lit-element/index.js';
|
|
3
|
+
import './components/user-group-default-permission-list.element.js';
|
|
4
|
+
import './components/user-group-granular-permission-list.element.js';
|
|
3
5
|
export declare class UmbUserGroupWorkspaceEditorElement extends UmbLitElement {
|
|
4
6
|
#private;
|
|
5
7
|
private _userGroup?;
|