funktechnik-schubert-website/app/api/admin/media/route.ts
2026-07-03 23:15:25 +02:00

34 lines
1.1 KiB
TypeScript

import { NextResponse } from "next/server";
import { requireAdminSession } from "@/lib/admin/auth";
import { listMediaFiles, saveMediaFile } from "@/lib/admin/media";
function relativeRedirect(target: string) {
return new NextResponse(null, {
status: 303,
headers: { Location: target },
});
}
export async function GET() {
if (!await requireAdminSession()) return NextResponse.json({ message: "Nicht autorisiert." }, { status: 401 });
return NextResponse.json({ files: await listMediaFiles() });
}
export async function POST(request: Request) {
if (!await requireAdminSession()) return NextResponse.json({ message: "Nicht autorisiert." }, { status: 401 });
const form = await request.formData();
const file = form.get("file");
if (!(file instanceof File)) {
return relativeRedirect("/admin/medien?error=missing-file");
}
try {
const result = await saveMediaFile(file);
if (result.error) return relativeRedirect(`/admin/medien?error=${encodeURIComponent(result.error)}`);
} catch {
return relativeRedirect("/admin/medien?error=storage");
}
return relativeRedirect("/admin/medien?uploaded=1");
}