diff --git a/ui/suite/index.html b/ui/suite/index.html index 77a47af..eaeba98 100644 --- a/ui/suite/index.html +++ b/ui/suite/index.html @@ -2918,9 +2918,11 @@ }); }); - // User Profile Loading - Integrates with GBAuth service + // User Profile Loading (function () { function updateUserUI(user) { + if (!user) return; + const userName = document.getElementById("userName"); const userEmail = document.getElementById("userEmail"); const userAvatar = document.getElementById("userAvatar"); @@ -2930,86 +2932,102 @@ const authText = document.getElementById("authText"); const authIcon = document.getElementById("authIcon"); - if (user && user.email) { - const displayName = - user.display_name || - user.first_name || - user.username || - "User"; - const email = user.email || ""; - const initial = ( - displayName.charAt(0) || "U" - ).toUpperCase(); + const displayName = + user.display_name || + user.first_name || + user.username || + "User"; + const email = user.email || ""; + const initial = ( + displayName.charAt(0) || "U" + ).toUpperCase(); - if (userName) userName.textContent = displayName; - if (userEmail) userEmail.textContent = email; - if (userAvatar) { - const avatarSpan = userAvatar.querySelector("span"); - if (avatarSpan) avatarSpan.textContent = initial; - } - if (userAvatarLarge) - userAvatarLarge.textContent = initial; + console.log("Updating user UI:", displayName, email); - if (authAction) { - authAction.href = "#"; - authAction.onclick = function (e) { - e.preventDefault(); - if (window.GBAuth) { - window.GBAuth.logout(); - } - }; - authAction.style.color = "var(--error)"; - } - if (authText) authText.textContent = "Sign out"; - if (authIcon) { - authIcon.innerHTML = - ''; - } + if (userName) userName.textContent = displayName; + if (userEmail) userEmail.textContent = email; + if (userAvatar) { + const avatarSpan = userAvatar.querySelector("span"); + if (avatarSpan) avatarSpan.textContent = initial; + } + if (userAvatarLarge) userAvatarLarge.textContent = initial; + + if (authAction) { + authAction.href = "#"; + authAction.onclick = function (e) { + e.preventDefault(); + fetch("/api/auth/logout", { + method: "POST", + }).finally(function () { + localStorage.removeItem("gb-access-token"); + localStorage.removeItem("gb-refresh-token"); + localStorage.removeItem("gb-user-data"); + sessionStorage.removeItem("gb-access-token"); + window.location.href = "/auth/login.html"; + }); + }; + authAction.style.color = "var(--error)"; + } + if (authText) authText.textContent = "Sign out"; + if (authIcon) { + authIcon.innerHTML = + ''; } } - // Listen for auth service events - if (window.GBAuth) { - window.GBAuth.on("userUpdated", updateUserUI); - window.GBAuth.on("login", function () { - const user = window.GBAuth.getCurrentUser(); - if (user) updateUserUI(user); - }); - window.GBAuth.on("logout", function () { - window.location.href = "/auth/login.html"; - }); + function loadUserProfile() { + var token = + localStorage.getItem("gb-access-token") || + sessionStorage.getItem("gb-access-token"); + if (!token) { + console.log("No auth token found"); + return; + } - // Load current user on page load - if (window.GBAuth.isAuthenticated()) { - const user = window.GBAuth.getCurrentUser(); + console.log( + "Loading user profile with token:", + token.substring(0, 10) + "...", + ); + + fetch("/api/auth/me", { + headers: { Authorization: "Bearer " + token }, + }) + .then(function (res) { + if (!res.ok) throw new Error("Not authenticated"); + return res.json(); + }) + .then(function (user) { + console.log("User profile loaded:", user); + updateUserUI(user); + localStorage.setItem( + "gb-user-data", + JSON.stringify(user), + ); + }) + .catch(function (err) { + console.log("Failed to load user profile:", err); + }); + } + + // Try to load cached user first + var cachedUser = localStorage.getItem("gb-user-data"); + if (cachedUser) { + try { + var user = JSON.parse(cachedUser); if (user && user.email) { updateUserUI(user); - } else { - // Fetch from API if not cached - window.AuthService.fetchCurrentUser().then( - updateUserUI, - ); } - } + } catch (e) {} + } + + // Always fetch fresh user data + if (document.readyState === "loading") { + document.addEventListener( + "DOMContentLoaded", + loadUserProfile, + ); } else { - // Fallback: wait for GBAuth to be available - document.addEventListener("DOMContentLoaded", function () { - setTimeout(function () { - if ( - window.GBAuth && - window.GBAuth.isAuthenticated() - ) { - const user = window.GBAuth.getCurrentUser(); - if (user) { - updateUserUI(user); - } else { - window.AuthService.fetchCurrentUser().then( - updateUserUI, - ); - } - } - }, 100); - }); + loadUserProfile(); } })();