Adds delete user functionality in admin panel #86 (#110)

* #86 Adds delete user functionality in admin panel

* Removes unnecessary code

* Prevents current user from deleting itself
This commit is contained in:
Pacodastre
2025-06-08 05:49:11 +01:00
committed by GitHub
parent e32954ea7d
commit 60abc03091
13 changed files with 214 additions and 8 deletions

View File

@ -0,0 +1,31 @@
import { defineEventHandler, createError } from "h3";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["user:delete"]);
if (!allowed)
throw createError({
statusCode: 403,
});
const userId = h3.context.params?.id;
if (!userId) {
throw createError({
statusCode: 400,
message: "No userId in route.",
});
}
if (userId === "system")
throw createError({
statusCode: 400,
statusMessage: "Cannot interact with system user.",
});
const user = await prisma.user.findUnique({ where: { id: userId } });
if (!user)
throw createError({ statusCode: 404, statusMessage: "User not found." });
await prisma.user.delete({ where: { id: userId } });
return { success: true };
});

View File

@ -76,6 +76,7 @@ export const systemACLDescriptions: ObjectFromList<typeof systemACLs> = {
"import:game:new": "Import a game.",
"user:read": "Fetch any user's information.",
"user:delete": "Delete a user.",
"news:read": "Read news articles.",
"news:create": "Create a new news article.",

View File

@ -70,6 +70,7 @@ export const systemACLs = [
"import:game:new",
"user:read",
"user:delete",
"news:read",
"news:create",