add condition for resend invite

This commit is contained in:
Mads Rasmussen
2023-10-16 21:02:36 +02:00
parent 88c34c357d
commit 906ce5510d
3 changed files with 59 additions and 1 deletions

View File

@@ -1,5 +1,11 @@
import { manifest as userAllowDisableActionManifest } from './user-allow-disable-action.condition.js';
import { manifest as userAllowEnableActionManifest } from './user-allow-enable-action.condition.js';
import { manifest as userAllowUnlockActionManifest } from './user-allow-unlock-action.condition.js';
import { manifest as userAllowResendInviteActionManifest } from './user-allow-resend-invite-action.condition.js';
export const manifests = [userAllowDisableActionManifest, userAllowEnableActionManifest, userAllowUnlockActionManifest];
export const manifests = [
userAllowDisableActionManifest,
userAllowEnableActionManifest,
userAllowUnlockActionManifest,
userAllowResendInviteActionManifest,
];

View File

@@ -0,0 +1,47 @@
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 { isCurrentUser } from '@umbraco-cms/backoffice/current-user';
import {
ManifestCondition,
UmbConditionConfigBase,
UmbConditionControllerArguments,
UmbExtensionCondition,
} from '@umbraco-cms/backoffice/extension-api';
import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';
export class UmbUserAllowResendInviteActionCondition 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));
});
}
async onUserDataChange(user: UmbUserDetail | undefined) {
if (!user || !user.id) {
this.permitted = false;
this.#onChange();
return;
}
this.permitted = user?.state === UserStateModel.INVITED;
this.#onChange();
}
}
export const manifest: ManifestCondition = {
type: 'condition',
name: 'User Allow Resend Invite Action Condition',
alias: 'Umb.Condition.User.AllowResendInviteAction',
api: UmbUserAllowResendInviteActionCondition,
};

View File

@@ -108,6 +108,11 @@ const entityActions: Array<ManifestTypes> = [
repositoryAlias: INVITE_USER_REPOSITORY_ALIAS,
entityTypes: [UMB_USER_ENTITY_TYPE],
},
conditions: [
{
alias: 'Umb.Condition.User.AllowResendInviteAction',
},
],
},
];