chore: Admin unlocking user, also verify workflow steps (#20613)

This commit is contained in:
Joe Au-Yeung
2025-04-09 14:30:00 -07:00
committed by GitHub
parent 1467b0b768
commit c43c5a0604
4 changed files with 56 additions and 0 deletions
@@ -119,6 +119,12 @@ function UsersTableBare() {
},
});
const verifyWorkflows = trpc.viewer.admin.verifyWorkflows.useMutation({
onSuccess: () => {
showToast("Workflows verified", "success");
},
});
const handleImpersonateUser = async (username: string | null) => {
await signIn("impersonation-auth", { username: username, callbackUrl: `${WEBAPP_URL}/event-types` });
};
@@ -236,6 +242,12 @@ function UsersTableBare() {
onClick: () => lockUserAccount.mutate({ userId: user.id, locked: !user.locked }),
icon: "lock",
},
{
id: "verify-workflows",
label: "Verify workflows",
onClick: () => verifyWorkflows.mutate({ userId: user.id }),
icon: "check",
},
{
id: "impersonation",
label: "Impersonate",
@@ -7,6 +7,7 @@ import { ZAdminRemoveTwoFactor } from "./removeTwoFactor.schema";
import { ZAdminPasswordResetSchema } from "./sendPasswordReset.schema";
import { ZSetSMSLockState } from "./setSMSLockState.schema";
import { toggleFeatureFlag } from "./toggleFeatureFlag.procedure";
import { ZAdminVerifyWorkflowsSchema } from "./verifyWorkflows.schema";
import {
workspacePlatformCreateSchema,
workspacePlatformUpdateSchema,
@@ -68,6 +69,13 @@ export const adminRouter = router({
);
return handler(opts);
}),
verifyWorkflows: authedAdminProcedure.input(ZAdminVerifyWorkflowsSchema).mutation(async (opts) => {
const handler = await importHandler(
namespaced("verifyWorkflows"),
() => import("./verifyWorkflows.handler")
);
return handler(opts);
}),
workspacePlatform: router({
list: authedAdminProcedure.query(async () => {
const handler = await importHandler(
@@ -0,0 +1,29 @@
import { prisma } from "@calcom/prisma";
import type { TrpcSessionUser } from "../../../types";
import type { TAdminVerifyWorkflowsSchema } from "./verifyWorkflows.schema";
type GetOptions = {
ctx: {
user: NonNullable<TrpcSessionUser>;
};
input: TAdminVerifyWorkflowsSchema;
};
export const verifyWorkflows = async ({ input }: GetOptions) => {
const { userId } = input;
await prisma.workflowStep.updateMany({
where: {
workflow: {
userId,
},
verifiedAt: null,
},
data: {
verifiedAt: new Date(),
},
});
};
export default verifyWorkflows;
@@ -0,0 +1,7 @@
import { z } from "zod";
export const ZAdminVerifyWorkflowsSchema = z.object({
userId: z.number(),
});
export type TAdminVerifyWorkflowsSchema = z.infer<typeof ZAdminVerifyWorkflowsSchema>;