munger-engine / proxy.ts
dromerosm's picture
feat: Implement secure sync button with live API status and adaptive polling
4435002
raw
history blame contribute delete
844 Bytes
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export function proxy(request: NextRequest) {
// Only protect /api routes, but exclude status and health for polling
if (request.nextUrl.pathname.startsWith("/api") &&
!request.nextUrl.pathname.includes("/api/v1/health")) {
const apiKey = request.headers.get("x-api-key");
const validApiKey = process.env.API_KEY;
// Check if API key matches (or if environment variable is not set, fail safe)
if (!validApiKey || apiKey !== validApiKey) {
return NextResponse.json(
{ error: "Unauthorized: Invalid or missing API Key" },
{ status: 401 }
);
}
}
return NextResponse.next();
}
export const config = {
matcher: "/api/:path*",
};