import { auth } from "@/auth"; import { NextResponse } from "next/server"; import { isPdfExportServiceRequest } from "@/lib/pdf-export-auth"; export default auth((req) => { const isAuthenticated = !!req.auth; const pathname = req.nextUrl.pathname; const isLoginPage = pathname === "/login"; // PdfService fetches the PO export page unauthenticated, using a `svc` token // that matches PDF_SERVICE_TOKEN (the route handler re-validates it). Let that // one route through so the service token isn't bounced to /login by the gate // below. Everything else stays auth-protected. if (isPdfExportServiceRequest(pathname, req.nextUrl.searchParams.get("svc"), process.env.PDF_SERVICE_TOKEN)) { return NextResponse.next(); } if (!isAuthenticated && !isLoginPage) { const loginUrl = new URL("/login", req.url); loginUrl.searchParams.set("callbackUrl", pathname); return NextResponse.redirect(loginUrl); } if (isAuthenticated && isLoginPage) { return NextResponse.redirect(new URL("/dashboard", req.url)); } }); export const config = { matcher: [ "/((?!api/auth|_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)", ], };