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,
+)}
+
+ );
+}