import { NextResponse } from "next/server"; import { aufruferAdresse } from "@/lib/adressen"; import { z } from "@/lib/validierung"; import { api, jsonLesen } from "@/server/api"; import { rechtErforderlich } from "@/server/auth/zugang"; import { profilAktivSetzen, profilLoeschen, profilSpeichern } from "@/server/services/katalog"; type Kontext = { params: Promise<{ id: string }> }; export const PATCH = api(async (anfrage: Request, { params }: Kontext) => { const aufrufer = await rechtErforderlich(anfrage, "katalogVerwalten"); const { aktiv } = z.object({ aktiv: z.boolean() }).parse(await jsonLesen(anfrage)); await profilAktivSetzen((await params).id, aktiv, aufrufer, aufruferAdresse(anfrage.headers)); return NextResponse.json({ ok: true }); }); export const PUT = api(async (anfrage: Request, { params }: Kontext) => { const aufrufer = await rechtErforderlich(anfrage, "katalogVerwalten"); const { quelltext } = z .object({ quelltext: z.string().min(1).max(200_000) }) .parse(await jsonLesen(anfrage)); return NextResponse.json( await profilSpeichern(quelltext, aufrufer, aufruferAdresse(anfrage.headers), (await params).id), ); }); export const DELETE = api(async (anfrage: Request, { params }: Kontext) => { const aufrufer = await rechtErforderlich(anfrage, "katalogVerwalten"); await profilLoeschen((await params).id, aufrufer, aufruferAdresse(anfrage.headers)); return new NextResponse(null, { status: 204 }); });