mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 00:03:33 +10:00
70 lines
1.4 KiB
TypeScript
70 lines
1.4 KiB
TypeScript
import { AppError } from '@documenso/lib/errors/app-error';
|
|
import { prisma } from '@documenso/prisma';
|
|
|
|
export type DisableUserOptions = {
|
|
id: number;
|
|
};
|
|
|
|
export const disableUser = async ({ id }: DisableUserOptions) => {
|
|
const user = await prisma.user.findFirst({
|
|
where: {
|
|
id,
|
|
},
|
|
include: {
|
|
apiTokens: true,
|
|
webhooks: true,
|
|
passkeys: true,
|
|
verificationTokens: true,
|
|
passwordResetTokens: true,
|
|
},
|
|
});
|
|
|
|
if (!user) {
|
|
throw new AppError('There was an error disabling the user');
|
|
}
|
|
|
|
try {
|
|
await prisma.$transaction(async (tx) => {
|
|
await tx.user.update({
|
|
where: { id },
|
|
data: { disabled: true },
|
|
});
|
|
|
|
await tx.apiToken.updateMany({
|
|
where: { userId: id },
|
|
data: {
|
|
expires: new Date(),
|
|
},
|
|
});
|
|
|
|
await tx.webhook.updateMany({
|
|
where: { userId: id },
|
|
data: {
|
|
enabled: false,
|
|
},
|
|
});
|
|
|
|
await tx.verificationToken.updateMany({
|
|
where: { userId: id },
|
|
data: {
|
|
expires: new Date(),
|
|
},
|
|
});
|
|
|
|
await tx.passwordResetToken.updateMany({
|
|
where: { userId: id },
|
|
data: {
|
|
expiry: new Date(),
|
|
},
|
|
});
|
|
|
|
await tx.passkey.deleteMany({
|
|
where: { userId: id },
|
|
});
|
|
});
|
|
} catch (error) {
|
|
console.error('Error disabling user', error);
|
|
throw error;
|
|
}
|
|
};
|