import { NextResponse } from "next/server"; import { matrixCsv, matrixFilterAus } from "@/lib/zuweisungsmatrix"; import { RechteFehler, rechtErforderlich } from "@/server/auth/sitzungspflicht"; import { zuweisungsMatrix } from "@/server/queries/zuweisungen"; /** * Zuweisungsmatrix als CSV (#025) mit denselben Filtern wie die Seite. Jede Rolle darf lesen; * der Handler prueft das selbst, der Proxy laesst ohne Cookie ohnehin niemanden durch. */ export async function GET(anfrage: Request) { try { await rechtErforderlich("lesen"); } catch (fehler) { if (fehler instanceof RechteFehler) return NextResponse.json({ fehler: fehler.message }, { status: 403 }); throw fehler; } const filter = matrixFilterAus(Object.fromEntries(new URL(anfrage.url).searchParams)); const { matrix } = await zuweisungsMatrix(filter); return new NextResponse(matrixCsv(matrix), { headers: { "Content-Type": "text/csv; charset=utf-8", "Content-Disposition": 'attachment; filename="sshkv-zuweisungen.csv"', "Cache-Control": "no-store", }, }); }