import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; import { getToken } from "next-auth/jwt"; export async function middleware(req: NextRequest) { const { pathname } = req.nextUrl; const secret = process.env.NEXTAUTH_SECRET; if (!secret) return NextResponse.next(); const token = await getToken({ req, secret }); if (pathname.startsWith("/admin")) { if (!token) { const url = new URL("/login", req.url); url.searchParams.set("callbackUrl", pathname); return NextResponse.redirect(url); } if (token.role !== "ADMIN") { return NextResponse.redirect(new URL("/portal", req.url)); } return NextResponse.next(); } if (pathname.startsWith("/portal")) { if (!token) { const url = new URL("/login", req.url); url.searchParams.set("callbackUrl", pathname); return NextResponse.redirect(url); } return NextResponse.next(); } if (pathname.startsWith("/dashboard")) { if (!token) { const url = new URL("/login", req.url); url.searchParams.set("callbackUrl", "/portal"); return NextResponse.redirect(url); } return NextResponse.redirect(new URL("/portal", req.url)); } return NextResponse.next(); } export const config = { matcher: ["/admin/:path*", "/portal/:path*", "/dashboard/:path*"], };