import { NextResponse, type NextRequest } from "next/server"; import { createServerClient, type CookieOptions } from "@supabase/ssr"; import { readSupabasePublicConfig } from "@/lib/supabase/config"; 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 config = readSupabasePublicConfig(); if (!config) { return { response, isAuthed: false, userEmail: null, isConfigured: false, }; } const supabase = createServerClient(config.url, config.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, }; };