Spaces:
Sleeping
Sleeping
fix(nav): proper Supabase error handling + console logs for auth debugging
Browse files- web/components/nav.tsx +15 -9
web/components/nav.tsx
CHANGED
|
@@ -36,6 +36,7 @@ export function Nav() {
|
|
| 36 |
const { data: { user }, error } = await supabase.auth.getUser();
|
| 37 |
|
| 38 |
if (error || !user) {
|
|
|
|
| 39 |
setUserEmail(null);
|
| 40 |
setUserRole(null);
|
| 41 |
setUserTeam(null);
|
|
@@ -45,17 +46,21 @@ export function Nav() {
|
|
| 45 |
|
| 46 |
setUserEmail(user.email || null);
|
| 47 |
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
setUserRole("user");
|
| 58 |
setUserTeam(null);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
}
|
| 60 |
} catch {
|
| 61 |
// Supabase client init error (env vars missing)
|
|
@@ -75,6 +80,7 @@ export function Nav() {
|
|
| 75 |
try {
|
| 76 |
const supabase = createClient();
|
| 77 |
const { data } = supabase.auth.onAuthStateChange((event) => {
|
|
|
|
| 78 |
// Re-fetch on any auth event
|
| 79 |
if (event === "SIGNED_IN" || event === "SIGNED_OUT" || event === "TOKEN_REFRESHED" || event === "INITIAL_SESSION") {
|
| 80 |
refreshAuth();
|
|
|
|
| 36 |
const { data: { user }, error } = await supabase.auth.getUser();
|
| 37 |
|
| 38 |
if (error || !user) {
|
| 39 |
+
console.log("[ClauseGuard Nav] No user session:", error?.message || "not logged in");
|
| 40 |
setUserEmail(null);
|
| 41 |
setUserRole(null);
|
| 42 |
setUserTeam(null);
|
|
|
|
| 46 |
|
| 47 |
setUserEmail(user.email || null);
|
| 48 |
|
| 49 |
+
// FIX v4.3: Properly check Supabase error response (it doesn't throw)
|
| 50 |
+
const { data: profile, error: profileError } = await supabase
|
| 51 |
+
.from("profiles")
|
| 52 |
+
.select("role, team_id")
|
| 53 |
+
.eq("id", user.id)
|
| 54 |
+
.single();
|
| 55 |
+
|
| 56 |
+
if (profileError) {
|
| 57 |
+
console.error("[ClauseGuard Nav] Profile fetch error:", profileError.message, profileError.code);
|
| 58 |
setUserRole("user");
|
| 59 |
setUserTeam(null);
|
| 60 |
+
} else {
|
| 61 |
+
console.log("[ClauseGuard Nav] Profile loaded:", { role: profile?.role, team_id: profile?.team_id });
|
| 62 |
+
setUserRole(profile?.role || "user");
|
| 63 |
+
setUserTeam(profile?.team_id || null);
|
| 64 |
}
|
| 65 |
} catch {
|
| 66 |
// Supabase client init error (env vars missing)
|
|
|
|
| 80 |
try {
|
| 81 |
const supabase = createClient();
|
| 82 |
const { data } = supabase.auth.onAuthStateChange((event) => {
|
| 83 |
+
console.log("[ClauseGuard Nav] Auth state changed:", event);
|
| 84 |
// Re-fetch on any auth event
|
| 85 |
if (event === "SIGNED_IN" || event === "SIGNED_OUT" || event === "TOKEN_REFRESHED" || event === "INITIAL_SESSION") {
|
| 86 |
refreshAuth();
|