import { NextRequest, NextResponse } from "next/server"; import { headers } from "next/headers"; import { auth } from "@/lib/auth"; import { uploadFile } from "@/lib/s3"; import { randomUUID } from "crypto"; export async function POST(req: NextRequest) { const session = await auth.api.getSession({ headers: await headers() }); if (!session || session.user.role !== "admin") { return NextResponse.json({ error: "Forbidden" }, { status: 403 }); } const form = await req.formData(); const file = form.get("file") as File | null; if (!file) return NextResponse.json({ error: "No file" }, { status: 400 }); const MAX_BYTES = 50 * 1024 * 1024; if (file.size > MAX_BYTES) return NextResponse.json({ error: "Файл слишком большой" }, { status: 413 }); const ext = file.name.split(".").pop() ?? "bin"; const key = `uploads/${randomUUID()}.${ext}`; const buffer = Buffer.from(await file.arrayBuffer()); const url = await uploadFile(key, buffer, file.type); return NextResponse.json({ url, key }); }