27 lines
965 B
TypeScript
27 lines
965 B
TypeScript
// app/api/dx/[...path]/route.ts
|
|
import { NextResponse } from "next/server";
|
|
import { dxGET } from "@/lib/directus";
|
|
import { requireBearer } from "@/app/api/_lib/auth";
|
|
|
|
export const runtime = "nodejs";
|
|
|
|
// GET /api/dx/<anything...>?<query>
|
|
// Proxies to Directus using the user's ma_at, no caching.
|
|
export async function GET(
|
|
req: Request,
|
|
{ params }: { params: { path: string[] } }
|
|
) {
|
|
try {
|
|
const bearer = requireBearer(req); // <-- pulls ma_at from Cookie
|
|
const search = new URL(req.url).search; // keep original query
|
|
const p = `/${(params.path || []).join("/")}${search || ""}`;
|
|
const json = await dxGET<any>(p, bearer);
|
|
return NextResponse.json(json, { status: 200 });
|
|
} catch (e: any) {
|
|
const status = e?.status ?? 500;
|
|
return NextResponse.json(
|
|
{ errors: [{ message: e?.message || "Directus proxy error", detail: e?.detail }] },
|
|
{ status }
|
|
);
|
|
}
|
|
}
|