import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; export function middleware(request: NextRequest) { // Dev bypass: skip all auth checks for local testing if (process.env.DEV_BYPASS_AUTH === "true") { return NextResponse.next(); } const { pathname } = request.nextUrl; const isAuthPage = pathname.startsWith("/login"); const isApiAuth = pathname.startsWith("/api/auth"); // Always allow auth API routes if (isApiAuth) { return NextResponse.next(); } // Check for session cookie (Auth.js database sessions) const sessionToken = request.cookies.get("authjs.session-token")?.value || request.cookies.get("__Secure-authjs.session-token")?.value; const isLoggedIn = !!sessionToken; // Redirect logged-in users away from login page if (isAuthPage && isLoggedIn) { return NextResponse.redirect(new URL("/dashboard", request.url)); } // Redirect unauthenticated users to login if (!isAuthPage && !isLoggedIn) { return NextResponse.redirect(new URL("/login", request.url)); } return NextResponse.next(); } export const config = { matcher: ["/((?!_next/static|_next/image|favicon.ico).*)"], };