import { NextResponse } from "next/server"; import { isManagerAuthenticated } from "@/services/management/management-auth"; import { createBusiness, listBusinesses } from "@/services/management/provisioning.service"; export async function GET() { if (!(await isManagerAuthenticated())) return NextResponse.json({ error: "Unauthorized." }, { status: 401 }); return NextResponse.json(await listBusinesses()); } export async function POST(request: Request) { if (!(await isManagerAuthenticated())) return NextResponse.json({ error: "Unauthorized." }, { status: 401 }); const body = (await request.json().catch(() => null)) as Record | null; const name = typeof body?.name === "string" ? body.name.trim() : ""; const slug = typeof body?.slug === "string" ? body.slug.trim().toLowerCase() : ""; const domain = typeof body?.domain === "string" ? body.domain.trim().toLowerCase() : ""; const image = typeof body?.image === "string" ? body.image.trim() : ""; if (!name || name.length > 120 || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug) || slug.length > 22 || !/^[a-z0-9.-]+$/.test(domain) || !/^[A-Za-z0-9._/@:-]+$/.test(image)) { return NextResponse.json({ error: "Enter a valid business name, slug, domain, and image version." }, { status: 400 }); } try { return NextResponse.json(await createBusiness({ name, slug, domain, image }), { status: 201 }); } catch (error) { return NextResponse.json({ error: error instanceof Error ? error.message : "Business deployment failed." }, { status: 500 }); } }