From 0b655a4669366a992c45191666f3f41ca4186380 Mon Sep 17 00:00:00 2001 From: Ryan Salazar Date: Sat, 9 May 2026 23:34:07 +0000 Subject: [PATCH] debug: /auth-debug page to surface server-side auth state for a request --- src/app/auth-debug/page.tsx | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/app/auth-debug/page.tsx diff --git a/src/app/auth-debug/page.tsx b/src/app/auth-debug/page.tsx new file mode 100644 index 0000000..7bf624b --- /dev/null +++ b/src/app/auth-debug/page.tsx @@ -0,0 +1,65 @@ +import { cookies } from "next/headers"; +import { createClient } from "@/lib/supabase/server"; + +export const dynamic = "force-dynamic"; +export const runtime = "nodejs"; + +export default async function AuthDebugPage() { + const cookieStore = await cookies(); + const allCookies = cookieStore.getAll(); + const sbCookies = allCookies.filter((c) => c.name.startsWith("sb-")); + + let session: any = null; + let user: any = null; + let getSessionError: string | null = null; + let getUserError: string | null = null; + + try { + const supabase = await createClient(); + const sessRes = await supabase.auth.getSession(); + session = sessRes.data?.session; + if (sessRes.error) getSessionError = sessRes.error.message; + const userRes = await supabase.auth.getUser(); + user = userRes.data?.user; + if (userRes.error) getUserError = userRes.error.message; + } catch (e: any) { + getSessionError = e?.message || String(e); + } + + return ( +
+{JSON.stringify(
+  {
+    note: "Server-side view of auth state for the request that loaded this page.",
+    cookies_total: allCookies.length,
+    sb_cookies: sbCookies.map((c) => ({ name: c.name, value_prefix: c.value.slice(0, 40) + (c.value.length > 40 ? "…" : "") })),
+    other_cookie_names: allCookies.filter((c) => !c.name.startsWith("sb-")).map((c) => c.name),
+    auth_getSession_error: getSessionError,
+    auth_getUser_error: getUserError,
+    has_session: !!session,
+    session: session
+      ? {
+          access_token_len: session.access_token?.length,
+          refresh_token_len: session.refresh_token?.length,
+          expires_in: session.expires_in,
+          expires_at: session.expires_at,
+          token_type: session.token_type,
+          user_id: session.user?.id,
+          user_email: session.user?.email,
+        }
+      : null,
+    user: user
+      ? {
+          id: user.id,
+          email: user.email,
+          aud: user.aud,
+          role: user.role,
+        }
+      : null,
+  },
+  null,
+  2,
+)}
+    
+ ); +}