import { NextResponse } from "next/server"; import { SESSION_COOKIE_NAME, type LoginResponse, popiartFetchEnvelope, } from "@/lib/popiart-api"; export async function POST(request: Request) { let body: { key?: string } = {}; try { body = (await request.json()) as { key?: string }; } catch { body = {}; } const key = body.key?.trim(); if (!key) { return NextResponse.json( { ok: false, error: { code: "VALIDATION_ERROR", message: "key is required", }, }, { status: 400 }, ); } try { const { response, payload } = await popiartFetchEnvelope("/auth/login", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ key }), }); const proxyResponse = NextResponse.json( payload ?? { ok: false, error: { code: "SERVER_ERROR", message: "invalid response from popiartServer", }, }, { status: response.status }, ); if (response.ok && payload?.ok && payload.data?.token) { proxyResponse.cookies.set({ name: SESSION_COOKIE_NAME, value: payload.data.token, httpOnly: true, sameSite: "lax", secure: process.env.NODE_ENV === "production", path: "/", maxAge: 60 * 60 * 24 * 7, }); } return proxyResponse; } catch (error) { return NextResponse.json( { ok: false, error: { code: "SERVER_ERROR", message: "failed to reach popiartServer", details: error instanceof Error ? error.message : String(error), }, }, { status: 502 }, ); } }