import { NextResponse, type NextRequest } from "next/server"; import { createServerClient, type CookieOptions } from "@supabase/ssr"; export type SessionSnapshot = { response: NextResponse; isAuthed: boolean; userEmail: string | null; isConfigured: boolean; }; export const updateSession = async (req: NextRequest): Promise => { const response = NextResponse.next({ request: req }); const url = process.env.NEXT_PUBLIC_SUPABASE_URL; const anonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY; if (!url || !anonKey) { return { response, isAuthed: false, userEmail: null, isConfigured: false, }; } const supabase = createServerClient(url, anonKey, { cookies: { getAll: () => req.cookies.getAll(), setAll: ( cookiesToSet: Array<{ name: string; value: string; options?: CookieOptions; }>, ) => { cookiesToSet.forEach(({ name, value, options }) => { response.cookies.set(name, value, options); }); }, }, }); const { data } = await supabase.auth.getUser(); return { response, isAuthed: Boolean(data?.user), userEmail: data.user?.email ?? null, isConfigured: true, }; };