From a29f51049b580eca40c4b9a1e31b7ca37463a2e1 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Wed, 15 Jan 2025 13:46:01 +0100 Subject: [PATCH] Link to content type and/or template from content/media/member info workspace view only if current user has access to settings (#17965) * Link to content type and/or template from content/media/member info workspace view only if current user has access to sections. * Fixed HTML * add const for condition alias * export const * return permitted value in onChange callback * use condition to check for access * implement across content * replace strings with consts * replace strings with const * remove attr with the ifDefined directive * allow to pass in callback type * Pass callback type * Update index.ts * add tests for UmbSectionUserPermissionCondition --------- Co-authored-by: Mads Rasmussen --- .../condition-controller-arguments.type.ts | 7 +- .../core/section/conditions/constants.ts | 1 + .../core/section/conditions/manifests.ts | 3 +- .../section-user-permission.condition.test.ts | 65 +++++++++++++++++++ .../section-user-permission.condition.ts | 12 +++- .../packages/core/section/conditions/types.ts | 5 +- .../src/packages/core/section/constants.ts | 1 + .../entity-actions/public-access/manifests.ts | 3 +- .../document-workspace-view-info.element.ts | 32 ++++++++- .../packages/documents/section/manifests.ts | 3 +- .../src/packages/health-check/manifests.ts | 4 +- .../packages/media/media-section/manifests.ts | 3 +- .../info/media-workspace-view-info.element.ts | 27 +++++++- ...mber-workspace-view-member-info.element.ts | 29 ++++++++- .../src/packages/members/section/manifests.ts | 3 +- .../src/packages/models-builder/manifests.ts | 4 +- .../packages/package-section/manifests.ts | 4 +- .../performance-profiling/manifests.ts | 4 +- .../src/packages/publish-cache/manifests.ts | 4 +- .../src/packages/search/manifests.ts | 3 +- .../packages/settings/section/manifests.ts | 3 +- .../src/packages/telemetry/manifests.ts | 4 +- .../src/packages/templating/menu/manifests.ts | 4 +- .../packages/translation/section/manifests.ts | 3 +- .../user/current-user/profile/manifests.ts | 4 +- .../src/packages/user/section/manifests.ts | 3 +- .../utils/all-umb-consts/index.ts | 2 +- 27 files changed, 211 insertions(+), 29 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.test.ts diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/condition/condition-controller-arguments.type.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/condition/condition-controller-arguments.type.ts index 550ef08a54..795b1e4907 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/condition/condition-controller-arguments.type.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/condition/condition-controller-arguments.type.ts @@ -3,4 +3,9 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; export type UmbConditionControllerArguments< ConditionConfigType extends UmbConditionConfigBase = UmbConditionConfigBase, -> = { host: UmbControllerHost; config: ConditionConfigType; onChange: () => void }; + ConditionOnChangeCallbackType = () => void, +> = { + host: UmbControllerHost; + config: ConditionConfigType; + onChange: ConditionOnChangeCallbackType; +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/constants.ts new file mode 100644 index 0000000000..b09ab84caf --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/constants.ts @@ -0,0 +1 @@ +export const UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS = 'Umb.Condition.SectionUserPermission'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/manifests.ts index d502598705..8e11e8eeb0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/manifests.ts @@ -1,3 +1,4 @@ +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js'; import { UmbSectionAliasCondition } from './section-alias.condition.js'; import { UmbSectionUserPermissionCondition } from './section-user-permission.condition.js'; @@ -5,7 +6,7 @@ export const manifests: Array = [ { type: 'condition', name: 'Section User Permission Condition', - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, api: UmbSectionUserPermissionCondition, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.test.ts new file mode 100644 index 0000000000..4bf20f789a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.test.ts @@ -0,0 +1,65 @@ +import { expect } from '@open-wc/testing'; +import { UmbNotificationContext } from '@umbraco-cms/backoffice/notification'; +import { UmbControllerHostElementMixin } from '@umbraco-cms/backoffice/controller-api'; +import { customElement } from '@umbraco-cms/backoffice/external/lit'; +import { UmbCurrentUserContext, UmbCurrentUserStore } from '@umbraco-cms/backoffice/current-user'; +import { UmbSectionUserPermissionCondition } from './section-user-permission.condition'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js'; + +@customElement('test-controller-host') +class UmbTestControllerHostElement extends UmbControllerHostElementMixin(HTMLElement) { + currentUserContext = new UmbCurrentUserContext(this); + + constructor() { + super(); + new UmbCurrentUserStore(this); + new UmbNotificationContext(this); + } + + async init() { + await this.currentUserContext.load(); + } +} + +describe('UmbSectionUserPermissionCondition', () => { + let hostElement: UmbTestControllerHostElement; + let condition: UmbSectionUserPermissionCondition; + + beforeEach(async () => { + hostElement = new UmbTestControllerHostElement(); + document.body.appendChild(hostElement); + await hostElement.init(); + }); + + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('should return true if the user have access to the section', (done) => { + condition = new UmbSectionUserPermissionCondition(hostElement, { + host: hostElement, + config: { + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, + match: 'Umb.Section.Content', + }, + onChange: (permitted) => { + expect(permitted).to.be.true; + done(); + }, + }); + }); + + it('should return false if the user does not have access to the section', (done) => { + condition = new UmbSectionUserPermissionCondition(hostElement, { + host: hostElement, + config: { + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, + match: 'DOES_NOT_EXIST', + }, + onChange: (permitted) => { + expect(permitted).to.be.false; + done(); + }, + }); + }); +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.ts index 5cd34442bd..e56e38a17e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/section-user-permission.condition.ts @@ -4,12 +4,18 @@ import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@umbraco-cms/backoffice/extension-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +// Do not export - for internal use only +type UmbOnChangeCallbackType = (permitted: boolean) => void; + export class UmbSectionUserPermissionCondition extends UmbControllerBase implements UmbExtensionCondition { config: UmbSectionUserPermissionConditionConfig; permitted = false; - #onChange: () => void; + #onChange: UmbOnChangeCallbackType; - constructor(host: UmbControllerHost, args: UmbConditionControllerArguments) { + constructor( + host: UmbControllerHost, + args: UmbConditionControllerArguments, + ) { super(host); this.config = args.config; this.#onChange = args.onChange; @@ -20,7 +26,7 @@ export class UmbSectionUserPermissionCondition extends UmbControllerBase impleme (currentUser) => { const allowedSections = currentUser?.allowedSections || []; this.permitted = allowedSections.includes(this.config.match); - this.#onChange(); + this.#onChange(this.permitted); }, 'umbSectionUserPermissionConditionObserver', ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/types.ts index 0f76d660bf..f1f8f6ab52 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/conditions/types.ts @@ -1,6 +1,9 @@ +import type { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js'; import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; -export type UmbSectionUserPermissionConditionConfig = UmbConditionConfigBase<'Umb.Condition.SectionUserPermission'> & { +export type UmbSectionUserPermissionConditionConfig = UmbConditionConfigBase< + typeof UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS +> & { /** * * diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/constants.ts index f34aeeba85..de9de5f626 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/constants.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/constants.ts @@ -1,2 +1,3 @@ +export * from './conditions/constants.js'; export * from './paths.js'; export * from './repository/constants.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts index e78c36c3b0..354dbf2f57 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts @@ -1,5 +1,6 @@ import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; import { UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS } from '../../user-permissions/index.js'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; import { UMB_ENTITY_IS_NOT_TRASHED_CONDITION_ALIAS } from '@umbraco-cms/backoffice/recycle-bin'; export const manifests: Array = [ @@ -25,7 +26,7 @@ export const manifests: Array = [ alias: UMB_ENTITY_IS_NOT_TRASHED_CONDITION_ALIAS, }, { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: 'Umb.Section.Members', }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.element.ts index b75d219ada..0e7c96dadf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.element.ts @@ -11,6 +11,9 @@ import { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/workspace'; import { UMB_TEMPLATE_PICKER_MODAL, UmbTemplateItemRepository } from '@umbraco-cms/backoffice/template'; import type { UmbDocumentTypeDetailModel } from '@umbraco-cms/backoffice/document-type'; import type { UmbModalRouteBuilder } from '@umbraco-cms/backoffice/router'; +import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; // import of local components import './document-workspace-view-info-links.element.js'; @@ -48,6 +51,9 @@ export class UmbDocumentWorkspaceViewInfoElement extends UmbLitElement { @state() private _variantsWithPendingChanges: Array = []; + @state() + private _hasSettingsAccess: boolean = false; + #workspaceContext?: typeof UMB_DOCUMENT_WORKSPACE_CONTEXT.TYPE; #templateRepository = new UmbTemplateItemRepository(this); #documentPublishingWorkspaceContext?: typeof UMB_DOCUMENT_PUBLISHING_WORKSPACE_CONTEXT.TYPE; @@ -83,6 +89,17 @@ export class UmbDocumentWorkspaceViewInfoElement extends UmbLitElement { this.#documentPublishingWorkspaceContext = instance; this.#observePendingChanges(); }); + + createExtensionApiByAlias(this, UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, [ + { + config: { + match: UMB_SETTINGS_SECTION_ALIAS, + }, + onChange: (permitted: boolean) => { + this._hasSettingsAccess = permitted; + }, + }, + ]); } #observeContent() { @@ -189,7 +206,10 @@ export class UmbDocumentWorkspaceViewInfoElement extends UmbLitElement { Document Type @@ -215,7 +235,10 @@ export class UmbDocumentWorkspaceViewInfoElement extends UmbLitElement { + href=${ifDefined( + this._hasSettingsAccess ? editTemplatePath + 'edit/' + this._templateUnique : undefined, + )} + ?readonly=${!this._hasSettingsAccess}> span { color: var(--uui-color-divider-emphasis); } + + uui-ref-node-document-type[readonly] { + padding-top: 7px; + padding-bottom: 7px; + } `, ]; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/section/manifests.ts index 026dea27f9..46d3001e26 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/section/manifests.ts @@ -1,5 +1,6 @@ import { UMB_CONTENT_SECTION_ALIAS } from '@umbraco-cms/backoffice/content'; import { UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_CONTENT_MENU_ALIAS } from '@umbraco-cms/backoffice/document'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; export const manifests: Array = [ { @@ -13,7 +14,7 @@ export const manifests: Array = [ }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: UMB_CONTENT_SECTION_ALIAS, }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts index 183ee1014b..f383dded95 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; + export const manifests: Array = [ { type: 'dashboard', @@ -13,7 +15,7 @@ export const manifests: Array = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Settings', + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-section/manifests.ts index 3124b312b0..d1fdb8bf24 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-section/manifests.ts @@ -1,4 +1,5 @@ import { UMB_MEDIA_ROOT_ENTITY_TYPE, UMB_MEDIA_MENU_ALIAS } from '../media/index.js'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; const sectionAlias = 'Umb.Section.Media'; @@ -14,7 +15,7 @@ export const manifests: Array = [ }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: sectionAlias, }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info.element.ts index 8d0a3ab103..c79e95d0f4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info.element.ts @@ -8,6 +8,9 @@ import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/rou import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/workspace'; import type { MediaUrlInfoModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; // import of local components import './media-workspace-view-info-history.element.js'; @@ -43,6 +46,9 @@ export class UmbMediaWorkspaceViewInfoElement extends UmbLitElement { @state() private _updateDate?: string | null = null; + @state() + private _hasSettingsAccess: boolean = false; + constructor() { super(); @@ -55,6 +61,17 @@ export class UmbMediaWorkspaceViewInfoElement extends UmbLitElement { this._editMediaTypePath = routeBuilder({}); }); + createExtensionApiByAlias(this, UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, [ + { + config: { + match: UMB_SETTINGS_SECTION_ALIAS, + }, + onChange: (permitted: boolean) => { + this._hasSettingsAccess = permitted; + }, + }, + ]); + this.consumeContext(UMB_MEDIA_WORKSPACE_CONTEXT, (context) => { this.#workspaceContext = context; this._mediaTypeUnique = this.#workspaceContext.getContentTypeId()!; @@ -175,7 +192,10 @@ export class UmbMediaWorkspaceViewInfoElement extends UmbLitElement { Media Type ${this._mediaTypeIcon ? html`` : nothing} @@ -281,6 +301,11 @@ export class UmbMediaWorkspaceViewInfoElement extends UmbLitElement { .link-item.with-href:hover { background: var(--uui-color-divider); } + + uui-ref-node-document-type[readonly] { + padding-top: 7px; + padding-bottom: 7px; + } `, ]; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts index e649605ee3..090f63cee1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts @@ -3,12 +3,15 @@ import { UMB_MEMBER_WORKSPACE_CONTEXT } from '../../member-workspace.context-tok import { UmbMemberKind, type UmbMemberKindType } from '../../../../utils/index.js'; import { TimeFormatOptions } from './utils.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/workspace'; import { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/workspace'; import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router'; import { UmbMemberTypeItemRepository } from '@umbraco-cms/backoffice/member-type'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; +import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-member-workspace-view-member-info') export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement implements UmbWorkspaceViewElement { @@ -36,6 +39,9 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple @state() private _memberKind?: UmbMemberKindType; + @state() + private _hasSettingsAccess: boolean = false; + #workspaceContext?: typeof UMB_MEMBER_WORKSPACE_CONTEXT.TYPE; #memberTypeItemRepository: UmbMemberTypeItemRepository = new UmbMemberTypeItemRepository(this); @@ -64,6 +70,17 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple this._memberTypeName = memberType.name; this._memberTypeIcon = memberType.icon; }); + + createExtensionApiByAlias(this, UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, [ + { + config: { + match: UMB_SETTINGS_SECTION_ALIAS, + }, + onChange: (permitted: boolean) => { + this._hasSettingsAccess = permitted; + }, + }, + ]); } #setDateFormat(date: string | undefined | null): string { @@ -91,7 +108,10 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple + href=${ifDefined( + this._hasSettingsAccess ? this._editMemberTypePath + 'edit/' + this._memberTypeUnique : undefined, + )} + ?readonly=${!this._hasSettingsAccess}> @@ -117,6 +137,11 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple h4 { margin: 0; } + + uui-ref-node[readonly] { + padding-top: 7px; + padding-bottom: 7px; + } `, ]; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts index f4e22eb398..5ac2a006cf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts @@ -2,6 +2,7 @@ import { UMB_MEMBER_MANAGEMENT_SECTION_ALIAS } from './constants.js'; import { manifests as sectionSidebarAppManifests } from './sidebar-app/manifests.js'; import { manifests as menuManifests } from './menu/manifests.js'; import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; const section: UmbExtensionManifest = { type: 'section', @@ -14,7 +15,7 @@ const section: UmbExtensionManifest = { }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: UMB_MEMBER_MANAGEMENT_SECTION_ALIAS, }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts index 61cd125a0d..862ab234b4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; + export const manifests: Array = [ { type: 'dashboard', @@ -12,7 +14,7 @@ export const manifests: Array = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Settings', + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts index 2f3effbeac..0dd57300c3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; + const sectionAlias = 'Umb.Section.Packages'; export const manifests: Array = [ @@ -12,7 +14,7 @@ export const manifests: Array = [ }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: sectionAlias, }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/performance-profiling/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/performance-profiling/manifests.ts index 756137ea28..67f5747cae 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/performance-profiling/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/performance-profiling/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; + export const manifests = [ { type: 'dashboard', @@ -12,7 +14,7 @@ export const manifests = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Settings', + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/publish-cache/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/publish-cache/manifests.ts index de1be9b57e..203dfd16fb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/publish-cache/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/publish-cache/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; + export const manifests = [ { type: 'dashboard', @@ -12,7 +14,7 @@ export const manifests = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Settings', + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts index a4548cf844..92e972641c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts @@ -1,4 +1,5 @@ import { manifests as examineManifests } from './examine-management-dashboard/manifests.js'; +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; export const manifests: Array = [ { @@ -32,7 +33,7 @@ export const manifests: Array = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Settings', + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/section/manifests.ts index 1ecac936ad..15c9bec870 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/section/manifests.ts @@ -1,4 +1,5 @@ import { UMB_SETTINGS_SECTION_ALIAS } from './constants.js'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ @@ -13,7 +14,7 @@ export const manifests: Array = }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: UMB_SETTINGS_SECTION_ALIAS, }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/telemetry/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/telemetry/manifests.ts index de18e665e7..1d179068fc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/telemetry/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/telemetry/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; + export const manifests = [ { type: 'dashboard', @@ -12,7 +14,7 @@ export const manifests = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Settings', + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/menu/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/menu/manifests.ts index 51073daa2c..7ff3fe0b79 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/menu/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/menu/manifests.ts @@ -1,4 +1,4 @@ -const sectionAlias = 'Umb.Section.Settings'; +import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings'; export const manifests: Array = [ { @@ -19,7 +19,7 @@ export const manifests: Array = [ conditions: [ { alias: 'Umb.Condition.SectionAlias', - match: sectionAlias, + match: UMB_SETTINGS_SECTION_ALIAS, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/translation/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/translation/section/manifests.ts index ec0d675b77..c82d9f1b4d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/translation/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/translation/section/manifests.ts @@ -1,4 +1,5 @@ import { UMB_TRANSLATION_SECTION_ALIAS } from './constants.js'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; export const manifests: Array = [ { @@ -12,7 +13,7 @@ export const manifests: Array = [ }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: UMB_TRANSLATION_SECTION_ALIAS, }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts index 3893b85d47..7f260c2372 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts @@ -1,3 +1,5 @@ +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; + export const manifests: Array = [ { type: 'userProfileApp', @@ -23,7 +25,7 @@ export const manifests: Array = [ }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: 'Umb.Section.Users', }, ], diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/section/manifests.ts index 08d6e8ce4e..2ff36ee0c9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/section/manifests.ts @@ -2,6 +2,7 @@ import { UMB_USER_MANAGEMENT_SECTION_ALIAS } from './constants.js'; import { manifests as sectionSidebarAppManifests } from './sidebar-app/manifests.js'; import { manifests as menuManifests } from './menu/manifests.js'; import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section'; export const manifests: Array = [ { @@ -15,7 +16,7 @@ export const manifests: Array = }, conditions: [ { - alias: 'Umb.Condition.SectionUserPermission', + alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS, match: UMB_USER_MANAGEMENT_SECTION_ALIAS, }, ], diff --git a/src/Umbraco.Web.UI.Client/utils/all-umb-consts/index.ts b/src/Umbraco.Web.UI.Client/utils/all-umb-consts/index.ts index aeff4bcdcf..42fa07d7f0 100644 --- a/src/Umbraco.Web.UI.Client/utils/all-umb-consts/index.ts +++ b/src/Umbraco.Web.UI.Client/utils/all-umb-consts/index.ts @@ -316,7 +316,7 @@ export const foundConsts = [{ }, { path: '@umbraco-cms/backoffice/section', - consts: ["UMB_SECTION_PATH_PATTERN","UMB_SECTION_ITEM_REPOSITORY_ALIAS","UMB_SECTION_PICKER_MODAL","UMB_SECTION_SIDEBAR_CONTEXT","UMB_SECTION_CONTEXT"] + consts: ["UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS","UMB_SECTION_PATH_PATTERN","UMB_SECTION_ITEM_REPOSITORY_ALIAS","UMB_SECTION_PICKER_MODAL","UMB_SECTION_SIDEBAR_CONTEXT","UMB_SECTION_CONTEXT"] }, { path: '@umbraco-cms/backoffice/server-file-system',