diff --git a/apps/web/src/utils/supabase/middleware.ts b/apps/web/src/utils/supabase/middleware.ts index fc644ab..8e8449d 100644 --- a/apps/web/src/utils/supabase/middleware.ts +++ b/apps/web/src/utils/supabase/middleware.ts @@ -8,53 +8,67 @@ export async function updateSession(request: NextRequest) { }, }); - const supabase = createServerClient( - process.env.NEXT_PUBLIC_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, - { - cookies: { - get(name: string) { - return request.cookies.get(name)?.value; - }, - set(name: string, value: string, options: CookieOptions) { - request.cookies.set({ - name, - value, - ...options, - }); - response = NextResponse.next({ - request: { - headers: request.headers, - }, - }); - response.cookies.set({ - name, - value, - ...options, - }); - }, - remove(name: string, options: CookieOptions) { - request.cookies.set({ - name, - value: "", - ...options, - }); - response = NextResponse.next({ - request: { - headers: request.headers, - }, - }); - response.cookies.set({ - name, - value: "", - ...options, - }); + try { + const supabase = createServerClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, + { + cookies: { + get(name: string) { + return request.cookies.get(name)?.value; + }, + set(name: string, value: string, options: CookieOptions) { + request.cookies.set({ + name, + value, + ...options, + }); + response = NextResponse.next({ + request: { + headers: request.headers, + }, + }); + response.cookies.set({ + name, + value, + ...options, + }); + }, + remove(name: string, options: CookieOptions) { + request.cookies.set({ + name, + value: "", + ...options, + }); + response = NextResponse.next({ + request: { + headers: request.headers, + }, + }); + response.cookies.set({ + name, + value: "", + ...options, + }); + }, }, + } + ); + + await supabase.auth.getUser(); + + return response; + } catch (error) { + console.error("Supabase proxy session refresh failed", { + pathname: request.nextUrl.pathname, + error, + }); + + // Never take down public pages because auth refresh failed for one request. + return NextResponse.next({ + request: { + headers: request.headers, }, - } - ); - - await supabase.auth.getUser(); - - return response; + }); + } }