2
0
Files
cal/calcom/packages/trpc/server/routers/viewer/auth/createAccountPassword.handler.ts
2024-08-09 00:39:27 +02:00

37 lines
1.0 KiB
TypeScript

import { passwordResetRequest } from "@calcom/features/auth/lib/passwordResetRequest";
import prisma from "@calcom/prisma";
import { IdentityProvider } from "@calcom/prisma/enums";
import { TRPCError } from "@trpc/server";
import type { TrpcSessionUser } from "../../../trpc";
type CreateAccountPasswordOptions = {
ctx: {
user: NonNullable<TrpcSessionUser>;
};
};
export const createAccountPasswordHandler = async ({ ctx }: CreateAccountPasswordOptions) => {
const { user } = ctx;
const isCal = user.identityProvider === IdentityProvider.CAL;
if (isCal) {
throw new TRPCError({ code: "FORBIDDEN", message: "cannot_create_account_password_cal_provider" });
}
const userWithPassword = await prisma.user.findUnique({
where: {
id: user.id,
},
select: {
password: true,
},
});
if (!isCal && userWithPassword?.password?.hash) {
throw new TRPCError({ code: "FORBIDDEN", message: "cannot_create_account_password_already_existing" });
}
await passwordResetRequest(user);
};