26 lines
841 B
TypeScript
26 lines
841 B
TypeScript
|
|
import { auth } from "@/lib/auth";
|
||
|
|
import { NextResponse } from "next/server";
|
||
|
|
|
||
|
|
export default auth((req) => {
|
||
|
|
const isLoggedIn = !!req.auth;
|
||
|
|
const isAgentRoute = req.nextUrl.pathname.startsWith("/agent");
|
||
|
|
const isLoginPage = req.nextUrl.pathname === "/agent/login";
|
||
|
|
|
||
|
|
// Protect all /agent/* routes except the login page itself
|
||
|
|
if (isAgentRoute && !isLoginPage && !isLoggedIn) {
|
||
|
|
return NextResponse.redirect(new URL("/agent/login", req.nextUrl.origin));
|
||
|
|
}
|
||
|
|
|
||
|
|
// Redirect already-authenticated users away from the login page
|
||
|
|
if (isLoginPage && isLoggedIn) {
|
||
|
|
return NextResponse.redirect(new URL("/agent/dashboard", req.nextUrl.origin));
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
export const config = {
|
||
|
|
matcher: [
|
||
|
|
// Run on /agent/* routes, excluding Next.js internals and static files
|
||
|
|
"/((?!_next/static|_next/image|favicon.ico).*)",
|
||
|
|
],
|
||
|
|
};
|