fix(admin): complete media manager
This commit is contained in:
parent
203c94b128
commit
ec30f69c72
5 changed files with 417 additions and 96 deletions
|
|
@ -1,13 +1,6 @@
|
|||
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 },
|
||||
});
|
||||
}
|
||||
import { deleteMediaFile, listMediaFiles, saveMediaFile } from "@/lib/admin/media";
|
||||
|
||||
export async function GET() {
|
||||
if (!await requireAdminSession()) return NextResponse.json({ message: "Nicht autorisiert." }, { status: 401 });
|
||||
|
|
@ -20,15 +13,27 @@ export async function POST(request: Request) {
|
|||
const file = form.get("file");
|
||||
|
||||
if (!(file instanceof File)) {
|
||||
return relativeRedirect("/admin/medien?error=missing-file");
|
||||
return NextResponse.json({ message: "Bitte wählen Sie eine Datei aus." }, { status: 400 });
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await saveMediaFile(file);
|
||||
if (result.error) return relativeRedirect(`/admin/medien?error=${encodeURIComponent(result.error)}`);
|
||||
if (result.error) return NextResponse.json({ message: result.error }, { status: 400 });
|
||||
} catch {
|
||||
return relativeRedirect("/admin/medien?error=storage");
|
||||
return NextResponse.json({ message: "Die Datei konnte nicht gespeichert werden. Bitte Upload-Speicher und Rechte prüfen." }, { status: 500 });
|
||||
}
|
||||
|
||||
return relativeRedirect("/admin/medien?uploaded=1");
|
||||
return NextResponse.json({ message: "Datei erfolgreich hochgeladen.", files: await listMediaFiles() });
|
||||
}
|
||||
|
||||
export async function DELETE(request: Request) {
|
||||
if (!await requireAdminSession()) return NextResponse.json({ message: "Nicht autorisiert." }, { status: 401 });
|
||||
|
||||
const body = await request.json() as { name?: string };
|
||||
if (!body.name) return NextResponse.json({ message: "Dateiname fehlt." }, { status: 400 });
|
||||
|
||||
const result = await deleteMediaFile(body.name);
|
||||
if (result.error) return NextResponse.json({ message: result.error }, { status: 400 });
|
||||
|
||||
return NextResponse.json({ message: "Datei gelöscht.", files: await listMediaFiles() });
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue