From 177b439c485f9c7b9b166f868e0c53854fd4acf9 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Mon, 18 Aug 2025 00:59:37 +0100 Subject: [PATCH] Enhance AuthContext to manage user profile in session storage - Added functionality to store and retrieve user profile data from session storage. - Updated authentication logic to check for user data alongside token and expiration. - Ensured user profile is cleared upon logout and set to null when authentication fails. - Improved logging for better debugging of user authentication flow. --- .../Dashboard/context/AuthContext.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/Dashboard/context/AuthContext.js b/src/components/Dashboard/context/AuthContext.js index e968710..aaae64c 100644 --- a/src/components/Dashboard/context/AuthContext.js +++ b/src/components/Dashboard/context/AuthContext.js @@ -54,13 +54,17 @@ const AuthProvider = ({ children }) => { // Read token from session storage if present useEffect(() => { const storedToken = sessionStorage.getItem('authToken') + const storedUser = sessionStorage.getItem('user') const storedExpiresAt = sessionStorage.getItem('authExpiresAt') - if (storedToken && storedExpiresAt) { + console.log('stored user', storedUser, storedToken) + if (storedToken && storedExpiresAt && storedUser) { setToken(storedToken) + setUserProfile(storedUser) setExpiresAt(storedExpiresAt) setAuthenticated(true) } else { setAuthenticated(false) + setUserProfile(null) setShowUnauthorizedModal(true) } setRetreivedTokenFromSession(true) @@ -73,6 +77,7 @@ const AuthProvider = ({ children }) => { setUserProfile(null) sessionStorage.removeItem('authToken') sessionStorage.removeItem('authExpiresAt') + sessionStorage.removeItem('user') window.location.href = `${config.backendUrl}/auth/logout?redirect_uri=${encodeURIComponent(redirectUri)}` }, []) @@ -112,6 +117,16 @@ const AuthProvider = ({ children }) => { setUserProfile(response.data) sessionStorage.setItem('authToken', response.data.access_token) sessionStorage.setItem('authExpiresAt', response.data.expires_at) + console.log('SETTING USER', { + ...response.data, + // eslint-disable-next-line + access_token: 'redacted', + // eslint-disable-next-line + refresh_token: 'redacted', + // eslint-disable-next-line + id_token: 'redacted' + }) + sessionStorage.setItem('user', response.data) const searchParams = new URLSearchParams(location.search) searchParams.delete('authCode') const newSearch = searchParams.toString() @@ -154,6 +169,7 @@ const AuthProvider = ({ children }) => { setUserProfile(response.data) sessionStorage.setItem('authToken', response.data.access_token) sessionStorage.setItem('authExpiresAt', response.data.expires_at) + sessionStorage.setItem('user', response.data) } else { setAuthenticated(false) setAuthError('Failed to authenticate user.')