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 <madsr@hey.com>
This commit is contained in:
Andy Butland
2025-01-15 13:46:01 +01:00
committed by GitHub
parent b8ee161e08
commit a29f51049b
27 changed files with 211 additions and 29 deletions

View File

@@ -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;
};

View File

@@ -0,0 +1 @@
export const UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS = 'Umb.Condition.SectionUserPermission';

View File

@@ -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<UmbExtensionManifest> = [
{
type: 'condition',
name: 'Section User Permission Condition',
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
api: UmbSectionUserPermissionCondition,
},
{

View File

@@ -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();
},
});
});
});

View File

@@ -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<UmbSectionUserPermissionConditionConfig>) {
constructor(
host: UmbControllerHost,
args: UmbConditionControllerArguments<UmbSectionUserPermissionConditionConfig, UmbOnChangeCallbackType>,
) {
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',
);

View File

@@ -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
> & {
/**
*
*

View File

@@ -1,2 +1,3 @@
export * from './conditions/constants.js';
export * from './paths.js';
export * from './repository/constants.js';

View File

@@ -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<UmbExtensionManifest> = [
@@ -25,7 +26,7 @@ export const manifests: Array<UmbExtensionManifest> = [
alias: UMB_ENTITY_IS_NOT_TRASHED_CONDITION_ALIAS,
},
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: 'Umb.Section.Members',
},
],

View File

@@ -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<any> = [];
@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 {
<strong><umb-localize key="content_documentType">Document Type</umb-localize></strong>
<uui-ref-node-document-type
standalone
href=${editDocumentTypePath + 'edit/' + this._documentTypeUnique}
href=${ifDefined(
this._hasSettingsAccess ? editDocumentTypePath + 'edit/' + this._documentTypeUnique : undefined,
)}
?readonly=${!this._hasSettingsAccess}
name=${ifDefined(this.localize.string(this._documentTypeName ?? ''))}>
<umb-icon slot="icon" name=${ifDefined(this._documentTypeIcon)}></umb-icon>
</uui-ref-node-document-type>
@@ -215,7 +235,10 @@ export class UmbDocumentWorkspaceViewInfoElement extends UmbLitElement {
<uui-ref-node
standalone
name=${ifDefined(this._templateName)}
href=${editTemplatePath + 'edit/' + this._templateUnique}>
href=${ifDefined(
this._hasSettingsAccess ? editTemplatePath + 'edit/' + this._templateUnique : undefined,
)}
?readonly=${!this._hasSettingsAccess}>
<uui-icon slot="icon" name="icon-document-html"></uui-icon>
<uui-action-bar slot="actions">
<uui-button
@@ -311,6 +334,11 @@ export class UmbDocumentWorkspaceViewInfoElement extends UmbLitElement {
.variant-state > span {
color: var(--uui-color-divider-emphasis);
}
uui-ref-node-document-type[readonly] {
padding-top: 7px;
padding-bottom: 7px;
}
`,
];
}

View File

@@ -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<UmbExtensionManifest> = [
{
@@ -13,7 +14,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: UMB_CONTENT_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,5 @@
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'dashboard',
@@ -13,7 +15,7 @@ export const manifests: Array<UmbExtensionManifest> = [
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
match: 'Umb.Section.Settings',
match: UMB_SETTINGS_SECTION_ALIAS,
},
],
},

View File

@@ -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<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: sectionAlias,
},
],

View File

@@ -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 {
<strong><umb-localize key="content_mediaType">Media Type</umb-localize></strong>
<uui-ref-node-document-type
standalone
href=${this._editMediaTypePath + 'edit/' + this._mediaTypeUnique}
href=${ifDefined(
this._hasSettingsAccess ? this._editMediaTypePath + 'edit/' + this._mediaTypeUnique : undefined,
)}
?readonly=${!this._hasSettingsAccess}
name=${ifDefined(this._mediaTypeName)}>
${this._mediaTypeIcon ? html`<umb-icon slot="icon" name=${this._mediaTypeIcon}></umb-icon>` : nothing}
</uui-ref-node-document-type>
@@ -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;
}
`,
];
}

View File

@@ -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
<uui-ref-node
standalone
.name=${this._memberTypeName}
.href=${this._editMemberTypePath + 'edit/' + this._memberTypeUnique}>
href=${ifDefined(
this._hasSettingsAccess ? this._editMemberTypePath + 'edit/' + this._memberTypeUnique : undefined,
)}
?readonly=${!this._hasSettingsAccess}>
<umb-icon slot="icon" .name=${this._memberTypeIcon}></umb-icon>
</uui-ref-node>
</div>
@@ -117,6 +137,11 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple
h4 {
margin: 0;
}
uui-ref-node[readonly] {
padding-top: 7px;
padding-bottom: 7px;
}
`,
];
}

View File

@@ -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,
},
],

View File

@@ -1,3 +1,5 @@
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'dashboard',
@@ -12,7 +14,7 @@ export const manifests: Array<UmbExtensionManifest> = [
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
match: 'Umb.Section.Settings',
match: UMB_SETTINGS_SECTION_ALIAS,
},
],
},

View File

@@ -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<UmbExtensionManifest> = [
@@ -12,7 +14,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: sectionAlias,
},
],

View File

@@ -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,
},
],
},

View File

@@ -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,
},
],
},

View File

@@ -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<UmbExtensionManifest> = [
{
@@ -32,7 +33,7 @@ export const manifests: Array<UmbExtensionManifest> = [
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
match: 'Umb.Section.Settings',
match: UMB_SETTINGS_SECTION_ALIAS,
},
],
},

View File

@@ -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<UmbExtensionManifest | UmbExtensionManifestKind> = [
@@ -13,7 +14,7 @@ export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> =
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -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,
},
],
},

View File

@@ -1,4 +1,4 @@
const sectionAlias = 'Umb.Section.Settings';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -19,7 +19,7 @@ export const manifests: Array<UmbExtensionManifest> = [
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
match: sectionAlias,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],
},

View File

@@ -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<UmbExtensionManifest> = [
{
@@ -12,7 +13,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: UMB_TRANSLATION_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,5 @@
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'userProfileApp',
@@ -23,7 +25,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: 'Umb.Section.Users',
},
],

View File

@@ -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<UmbExtensionManifest | UmbExtensionManifestKind> = [
{
@@ -15,7 +16,7 @@ export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> =
},
conditions: [
{
alias: 'Umb.Condition.SectionUserPermission',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
match: UMB_USER_MANAGEMENT_SECTION_ALIAS,
},
],

View File

@@ -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',