36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
import { cookies } from "next/headers";
|
|
|
|
const API_BASE_URL =
|
|
process.env.NEXT_PUBLIC_API_BASE_URL ?? "";
|
|
|
|
// POST /api/admin/beta-invites?dryRun=true&limit=10&tokenMinutes=30
|
|
export async function POST(req: Request) {
|
|
const token = cookies().get("session_token")?.value;
|
|
|
|
if (!token) {
|
|
return NextResponse.json({ error: "Missing admin token" }, { status: 401 });
|
|
}
|
|
|
|
const url = new URL(req.url);
|
|
const dryRun = url.searchParams.get("dryRun") ?? "true";
|
|
const limit = url.searchParams.get("limit") ?? "0";
|
|
const tokenMinutes = url.searchParams.get("tokenMinutes") ?? "30";
|
|
|
|
const upstream = `${API_BASE_URL}/api/v1/admin/beta/invites/send?dryRun=${dryRun}&limit=${limit}&tokenMinutes=${tokenMinutes}`;
|
|
|
|
const res = await fetch(upstream, {
|
|
method: "POST",
|
|
headers: {
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
cache: "no-store",
|
|
});
|
|
|
|
const text = await res.text();
|
|
return new NextResponse(text, {
|
|
status: res.status,
|
|
headers: { "Content-Type": res.headers.get("content-type") ?? "application/json" },
|
|
});
|
|
}
|