import { NextResponse } from "next/server"; const publicRoutes = ["/", "/properties"]; const authRoutes = ["/login", "/auth/choose-role", "/forgot-password", "/register/owner", "/register/tenant", "/register/agent"]; const ownerRoutes = ["/owner/account-book", "/owner/bookings", "/owner/calendar", "/owner/profits", "/owner/properties/add", "/owner/reservations"]; //ممكن كبو لانو زيادة const priveteRoute = ["/account-verification", "/booked-properties", "/change-password", "/favorites", "/my-rates", "/notifications", "/payments", "/profile", "/reservations"]; export function middleware(request) { const { pathname } = request.nextUrl; const token = request.cookies.get("auth_token")?.value; const userCookie = request.cookies.get("cached_user")?.value; let isOwner = null; if (userCookie) { try { const user = JSON.parse(decodeURIComponent(userCookie)); isOwner = user.roles?.includes("Owner"); } catch (error) { console.error("Cookie parse error:", error); } } const isPublicRoute = publicRoutes.some((route) => pathname === route || (route !== "/" && pathname.startsWith(route))); const isAuthRoute = authRoutes.some((route) => pathname === route || pathname.startsWith(route)); const IsOwner = ownerRoutes.some((route) => route === pathname || pathname.startsWith(route)); const IsPrivateRoute = priveteRoute.some((route) => pathname === route || pathname.startsWith(route)); if (!token && !isPublicRoute && !isAuthRoute) { return NextResponse.redirect(new URL("/login", request.url)); } if (token && isAuthRoute) { return NextResponse.redirect(new URL("/", request.url)); } if (IsOwner && !isOwner) { return NextResponse.redirect(new URL("/", request.url)); } if (IsPrivateRoute && !token) { return NextResponse.redirect(new URL("/login", request.url)); } return NextResponse.next(); } export const config = { matcher: ["/((?!api|_next/static|_next/image|favicon.ico|.*\\.(?:png|jpg|jpeg|gif|svg|ico|webp|css|js|woff|woff2|ttf|eot)$).*)"], };