add conditions to show the user enable and disable entity actions at the right time
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
import { manifest as userIsDisabledManifest } from './user-allow-enable-action.condition.js';
|
||||
import { manifest as userIsActiveManifest } from './user-allow-disable-action.condition.js';
|
||||
|
||||
export const manifests = [userIsDisabledManifest, userIsActiveManifest];
|
||||
@@ -0,0 +1,40 @@
|
||||
import { UmbUserDetail } from '../types.js';
|
||||
import { UmbUserWorkspaceContext } from '../workspace/user-workspace.context.js';
|
||||
import { UserStateModel } from '@umbraco-cms/backoffice/backend-api';
|
||||
import { UmbBaseController } from '@umbraco-cms/backoffice/controller-api';
|
||||
import {
|
||||
ManifestCondition,
|
||||
UmbConditionConfigBase,
|
||||
UmbConditionControllerArguments,
|
||||
UmbExtensionCondition,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';
|
||||
|
||||
export class UmbUserAllowDisableActionCondition extends UmbBaseController implements UmbExtensionCondition {
|
||||
config: UmbConditionConfigBase;
|
||||
permitted = false;
|
||||
#onChange: () => void;
|
||||
|
||||
constructor(args: UmbConditionControllerArguments<UmbConditionConfigBase>) {
|
||||
super(args.host);
|
||||
this.config = args.config;
|
||||
this.#onChange = args.onChange;
|
||||
|
||||
this.consumeContext(UMB_WORKSPACE_CONTEXT, (context) => {
|
||||
const userContext = context as UmbUserWorkspaceContext;
|
||||
this.observe(userContext.data, (data) => this.onUserDataChange(data));
|
||||
});
|
||||
}
|
||||
|
||||
onUserDataChange(user: UmbUserDetail | undefined) {
|
||||
this.permitted = user?.state !== UserStateModel.DISABLED;
|
||||
this.#onChange();
|
||||
}
|
||||
}
|
||||
|
||||
export const manifest: ManifestCondition = {
|
||||
type: 'condition',
|
||||
name: 'User Allow Disable Action Condition',
|
||||
alias: 'Umb.Condition.User.AllowDisableAction',
|
||||
api: UmbUserAllowDisableActionCondition,
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
import { UmbUserDetail } from '../types.js';
|
||||
import { UmbUserWorkspaceContext } from '../workspace/user-workspace.context.js';
|
||||
import { UserStateModel } from '@umbraco-cms/backoffice/backend-api';
|
||||
import { UmbBaseController } from '@umbraco-cms/backoffice/controller-api';
|
||||
import {
|
||||
ManifestCondition,
|
||||
UmbConditionConfigBase,
|
||||
UmbConditionControllerArguments,
|
||||
UmbExtensionCondition,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';
|
||||
|
||||
export class UmbUserAllowEnableActionCondition extends UmbBaseController implements UmbExtensionCondition {
|
||||
config: UmbConditionConfigBase;
|
||||
permitted = false;
|
||||
#onChange: () => void;
|
||||
|
||||
constructor(args: UmbConditionControllerArguments<UmbConditionConfigBase>) {
|
||||
super(args.host);
|
||||
this.config = args.config;
|
||||
this.#onChange = args.onChange;
|
||||
|
||||
this.consumeContext(UMB_WORKSPACE_CONTEXT, (context) => {
|
||||
const userContext = context as UmbUserWorkspaceContext;
|
||||
this.observe(userContext.data, (data) => this.onUserDataChange(data));
|
||||
});
|
||||
}
|
||||
|
||||
onUserDataChange(user: UmbUserDetail | undefined) {
|
||||
this.permitted = user?.state === UserStateModel.DISABLED;
|
||||
this.#onChange();
|
||||
}
|
||||
}
|
||||
|
||||
export const manifest: ManifestCondition = {
|
||||
type: 'condition',
|
||||
name: 'User Allow Enable Action Condition',
|
||||
alias: 'Umb.Condition.User.AllowEnableAction',
|
||||
api: UmbUserAllowEnableActionCondition,
|
||||
};
|
||||
@@ -37,6 +37,11 @@ const entityActions: Array<ManifestTypes> = [
|
||||
repositoryAlias: ENABLE_USER_REPOSITORY_ALIAS,
|
||||
entityTypes: [UMB_USER_ENTITY_TYPE],
|
||||
},
|
||||
conditions: [
|
||||
{
|
||||
alias: 'Umb.Condition.User.AllowEnableAction',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'entityAction',
|
||||
@@ -50,6 +55,11 @@ const entityActions: Array<ManifestTypes> = [
|
||||
repositoryAlias: DISABLE_USER_REPOSITORY_ALIAS,
|
||||
entityTypes: [UMB_USER_ENTITY_TYPE],
|
||||
},
|
||||
conditions: [
|
||||
{
|
||||
alias: 'Umb.Condition.User.AllowDisableAction',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'entityAction',
|
||||
|
||||
@@ -4,6 +4,7 @@ import { manifests as modalManifests } from './modals/manifests.js';
|
||||
import { manifests as sectionViewManifests } from './section-view/manifests.js';
|
||||
import { manifests as entityActionsManifests } from './entity-actions/manifests.js';
|
||||
import { manifests as entityBulkActionManifests } from './entity-bulk-actions/manifests.js';
|
||||
import { manifests as conditionsManifests } from './conditions/manifests.js';
|
||||
|
||||
export const manifests = [
|
||||
...repositoryManifests,
|
||||
@@ -12,4 +13,5 @@ export const manifests = [
|
||||
...sectionViewManifests,
|
||||
...entityActionsManifests,
|
||||
...entityBulkActionManifests,
|
||||
...conditionsManifests,
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user