import { createServerClient } from "@supabase/ssr" import { NextResponse, type NextRequest } from "next/server" export async function proxy(request: NextRequest) { let supabaseResponse = NextResponse.next({ request }) const supabase = createServerClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, { cookies: { getAll() { return request.cookies.getAll() }, setAll(cookiesToSet) { cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value)) supabaseResponse = NextResponse.next({ request }) cookiesToSet.forEach(({ name, value, options }) => supabaseResponse.cookies.set(name, value, options) ) }, }, } ) const { data: { user } } = await supabase.auth.getUser() const { pathname } = request.nextUrl const protectedPaths = ["/dashboard", "/train", "/runs", "/datasets", "/models", "/settings"] const isProtected = protectedPaths.some((p) => pathname.startsWith(p)) const devPreview = process.env.NEXT_PUBLIC_DEV_PREVIEW === "true" if (!user && isProtected && !devPreview) { const url = request.nextUrl.clone() url.pathname = "/auth/login" url.searchParams.set("next", pathname) return NextResponse.redirect(url) } if (user && pathname.startsWith("/auth") && !devPreview) { return NextResponse.redirect(new URL("/dashboard", request.url)) } return supabaseResponse } export const config = { matcher: ["/((?!_next/static|_next/image|favicon.ico|api/).*)"], }