hp-prod-tracker/src/middleware.ts

41 lines
1.2 KiB
TypeScript

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).*)"],
};