Download frontend/src/proxy.ts from Ramosh99/cognify: direct link, hf CLI and curl.
- Browser
- Download file 1.72 kB
-
https://huggingface.co/spaces/Ramosh99/cognify/resolve/main/frontend/src/proxy.ts
- Command line
-
hf download hf://spaces/Ramosh99/cognify/frontend/src/proxy.ts
-
curl -L -o proxy.ts https://huggingface.co/spaces/Ramosh99/cognify/resolve/main/frontend/src/proxy.ts
1.72 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) | |
| ); | |
| }, | |
| }, | |
| } | |
| ); | |
| // Refresh session — required for Server Components to read the session | |
| const { data: { user } } = await supabase.auth.getUser(); | |
| const { pathname } = request.nextUrl; | |
| const isDashboard = pathname.startsWith("/dashboard"); | |
| const isLogin = pathname.startsWith("/login"); | |
| // Protect dashboard — redirect unauthenticated users to /login | |
| if (isDashboard && !user) { | |
| const redirectUrl = request.nextUrl.clone(); | |
| redirectUrl.pathname = "/login"; | |
| return NextResponse.redirect(redirectUrl); | |
| } | |
| // Redirect logged-in users away from /login | |
| if (isLogin && user) { | |
| const redirectUrl = request.nextUrl.clone(); | |
| redirectUrl.pathname = "/dashboard"; | |
| return NextResponse.redirect(redirectUrl); | |
| } | |
| return supabaseResponse; | |
| } | |
| export const config = { | |
| matcher: [ | |
| "/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)", | |
| ], | |
| }; | |