Spaces:
Sleeping
Sleeping
| 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/).*)"], | |
| } | |