Add API utility for requiring an admin session

This commit is contained in:
Hornwitser 2025-06-28 00:55:26 +02:00
parent b0d5cdf791
commit b2f48e98e0
3 changed files with 13 additions and 15 deletions

View file

@ -1,13 +1,6 @@
import { deleteDatabase } from "~/server/database";
export default defineEventHandler(async (event) => {
const session = await requireServerSession(event);
if (session.account.type !== "admin") {
throw createError({
statusCode: 403,
statusMessage: "Forbidden",
});
}
await requireServerSessionWithAdmin(event);
await deleteDatabase();
})

View file

@ -4,13 +4,7 @@ import { z } from "zod/v4-mini";
import { broadcastEvent } from "~/server/streams";
export default defineEventHandler(async (event) => {
const session = await requireServerSession(event);
if (session.account.type !== "admin") {
throw createError({
statusCode: 403,
statusMessage: "Forbidden",
});
}
await requireServerSessionWithAdmin(event);
const { success, error, data: patch } = apiUserPatchSchema.safeParse(await readBody(event));
if (!success) {
throw createError({

View file

@ -70,3 +70,14 @@ export async function requireServerSession(event: H3Event) {
});
return session;
}
export async function requireServerSessionWithAdmin(event: H3Event) {
const session = await requireServerSession(event);
if (session.account.type !== "admin") {
throw createError({
statusCode: 403,
statusMessage: "Forbidden",
});
}
return session;
}