// middleware.ts import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; // کلید کوکی که توکن در آن ذخیره می‌شود const AUTH_COOKIE_KEY = "userToken"; // <<< این را با نام واقعی کوکی خودتان جایگزین کنید export function middleware(request: NextRequest) { const token = request.cookies.get(AUTH_COOKIE_KEY)?.value; const { pathname } = request.nextUrl; // مسیرهای عمومی که نیاز به احراز هویت ندارند (مثلا برای لاگین و ثبت نام) const publicPaths = ["/"]; // اگر کاربر توکن دارد if (token) { // اگر در مسیر لاگین است، به داشبورد هدایت کن if (pathname === "/") { const url = request.nextUrl.clone(); url.pathname = "/tickets/create"; return NextResponse.redirect(url); } // در غیر این صورت، اجازه دسترسی به مسیر فعلی را بده return NextResponse.next(); } else { // اگر کاربر توکن ندارد // اگر در مسیرهای عمومی است، اجازه دسترسی بده if (publicPaths.includes(pathname)) { return NextResponse.next(); } // اگر در مسیرهای خصوصی است (مثل داشبورد)، به صفحه لاگین هدایت کن if (pathname.startsWith("/tickets/create")) { const url = request.nextUrl.clone(); url.pathname = "/"; return NextResponse.redirect(url); } // برای سایر مسیرهای خصوصی ناشناس return NextResponse.next(); // یا هدایت به صفحه لاگین } } // تنظیمات middleware: کدام مسیرها را پوشش دهد export const config = { matcher: [ /* * Match all request paths except for the ones starting with: * - api (API routes) * - _next/static (static files) * - _next/image (image optimization files) * - favicon.ico (favicon file) */ "/((?!api|_next/static|_next/image|favicon.ico).*)", ], };