diff --git a/src/middleware.ts b/src/middleware.ts index b12b19c..84cf931 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,14 +1,21 @@ import { auth } from "@/auth"; import { NextResponse } from "next/server"; -// Public routes that don't require authentication -const publicRoutes = ["/login", "/signup", "/forgot-password", "/reset-password", "/verify-email", "/contact"]; +// Auth routes - logged-in users should be redirected away from these +const authRoutes = ["/login", "/signup", "/forgot-password", "/reset-password", "/verify-email"]; + +// Public routes - accessible to everyone (logged in or not) +const publicRoutes = ["/", "/contact", "/about", "/faq"]; export default auth((req) => { const { nextUrl } = req; const isLoggedIn = !!req.auth; const userRole = (req.auth?.user as any)?.role; + const isAuthRoute = authRoutes.some( + (route) => nextUrl.pathname === route || nextUrl.pathname.startsWith(route + "/") + ); + const isPublicRoute = publicRoutes.some( (route) => nextUrl.pathname === route || nextUrl.pathname.startsWith(route + "/") ); @@ -26,14 +33,19 @@ export default auth((req) => { return NextResponse.next(); } - // Redirect logged-in users away from public routes (login, signup) - if (isLoggedIn && isPublicRoute) { + // Allow access to public routes for everyone + if (isPublicRoute) { + return NextResponse.next(); + } + + // Redirect logged-in users away from auth routes (login, signup, etc.) + if (isLoggedIn && isAuthRoute) { // Redirect to home page instead of dashboard return NextResponse.redirect(new URL("/", nextUrl.origin)); } // Redirect non-logged-in users to login page for protected routes - if (!isLoggedIn && !isPublicRoute) { + if (!isLoggedIn && !isAuthRoute) { const loginUrl = new URL("/login", nextUrl.origin); loginUrl.searchParams.set("callbackUrl", nextUrl.pathname); return NextResponse.redirect(loginUrl);