import { auth } from "@/auth"; import { NextResponse } from "next/server"; export default auth((req) => { const { nextUrl } = req; const isLoggedIn = !!req.auth; const role = (req.auth?.user as any)?.role || "guest"; const isAuthPage = nextUrl.pathname.startsWith("/login") || nextUrl.pathname.startsWith("/register") || nextUrl.pathname.startsWith("/bind-account"); const isProtected = nextUrl.pathname.startsWith("/dashboard") || nextUrl.pathname.startsWith("/bookmarks") || nextUrl.pathname.startsWith("/admin"); if (isLoggedIn && isAuthPage) { return NextResponse.redirect(new URL("/dashboard", nextUrl)); } if (!isLoggedIn && isProtected) { return NextResponse.redirect(new URL("/login", nextUrl)); } if (nextUrl.pathname.startsWith("/admin") && role !== "admin") { return NextResponse.redirect(new URL("/unauthorized", nextUrl)); } return NextResponse.next(); }); export const config = { matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"], };