ModelForge CI
deploy: 2026-06-19 19:24 UTC
6761f70
Raw
History Blame Contribute Delete
1.57 kB
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/).*)"],
}