feat: admin ui for disabling users (#1547)

This commit is contained in:
Catalin Pit
2024-12-30 05:45:33 +02:00
committed by GitHub
parent ee6efc4cca
commit df33fbf91b
10 changed files with 451 additions and 13 deletions

View File

@ -0,0 +1,69 @@
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: {
ApiToken: true,
Webhooks: true,
passkeys: true,
VerificationToken: true,
PasswordResetToken: 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;
}
};

View File

@ -0,0 +1,27 @@
import { AppError } from '@documenso/lib/errors/app-error';
import { prisma } from '@documenso/prisma';
export type EnableUserOptions = {
id: number;
};
export const enableUser = async ({ id }: EnableUserOptions) => {
const user = await prisma.user.findFirst({
where: {
id,
},
});
if (!user) {
throw new AppError('There was an error enabling the user');
}
await prisma.user.update({
where: {
id,
},
data: {
disabled: false,
},
});
};