import type { NextRequest } from "next/server"; import { z } from "zod"; import { getActor } from "@/lib/auth/actor"; import { requirePermission } from "@/lib/auth/policy"; import { errorResponse, firstZodMessage, jsonError } from "@/lib/http"; import { getSettings, saveSettings } from "@/lib/settings"; export const dynamic = "force-dynamic"; const updateSchema = z.object({ editorsMaySetSlug: z.boolean().optional(), }); export async function GET(): Promise { try { requirePermission(await getActor(), "instance:manage"); return Response.json({ settings: await getSettings() }); } catch (error) { return errorResponse(error); } } export async function PATCH(request: NextRequest): Promise { try { requirePermission(await getActor(), "instance:manage"); const parsed = updateSchema.safeParse(await request.json()); if (!parsed.success) { return jsonError(firstZodMessage(parsed.error)); } if (Object.keys(parsed.data).length === 0) { return jsonError("Es wurden keine Änderungen übermittelt."); } return Response.json({ settings: await saveSettings(parsed.data) }); } catch (error) { return errorResponse(error); } }