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.
This commit is contained in:
Tom Butcher 2025-08-18 00:59:37 +01:00
parent 678d5a0e90
commit 177b439c48

View File

@ -54,13 +54,17 @@ const AuthProvider = ({ children }) => {
// Read token from session storage if present // Read token from session storage if present
useEffect(() => { useEffect(() => {
const storedToken = sessionStorage.getItem('authToken') const storedToken = sessionStorage.getItem('authToken')
const storedUser = sessionStorage.getItem('user')
const storedExpiresAt = sessionStorage.getItem('authExpiresAt') const storedExpiresAt = sessionStorage.getItem('authExpiresAt')
if (storedToken && storedExpiresAt) { console.log('stored user', storedUser, storedToken)
if (storedToken && storedExpiresAt && storedUser) {
setToken(storedToken) setToken(storedToken)
setUserProfile(storedUser)
setExpiresAt(storedExpiresAt) setExpiresAt(storedExpiresAt)
setAuthenticated(true) setAuthenticated(true)
} else { } else {
setAuthenticated(false) setAuthenticated(false)
setUserProfile(null)
setShowUnauthorizedModal(true) setShowUnauthorizedModal(true)
} }
setRetreivedTokenFromSession(true) setRetreivedTokenFromSession(true)
@ -73,6 +77,7 @@ const AuthProvider = ({ children }) => {
setUserProfile(null) setUserProfile(null)
sessionStorage.removeItem('authToken') sessionStorage.removeItem('authToken')
sessionStorage.removeItem('authExpiresAt') sessionStorage.removeItem('authExpiresAt')
sessionStorage.removeItem('user')
window.location.href = `${config.backendUrl}/auth/logout?redirect_uri=${encodeURIComponent(redirectUri)}` window.location.href = `${config.backendUrl}/auth/logout?redirect_uri=${encodeURIComponent(redirectUri)}`
}, []) }, [])
@ -112,6 +117,16 @@ const AuthProvider = ({ children }) => {
setUserProfile(response.data) setUserProfile(response.data)
sessionStorage.setItem('authToken', response.data.access_token) sessionStorage.setItem('authToken', response.data.access_token)
sessionStorage.setItem('authExpiresAt', response.data.expires_at) 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) const searchParams = new URLSearchParams(location.search)
searchParams.delete('authCode') searchParams.delete('authCode')
const newSearch = searchParams.toString() const newSearch = searchParams.toString()
@ -154,6 +169,7 @@ const AuthProvider = ({ children }) => {
setUserProfile(response.data) setUserProfile(response.data)
sessionStorage.setItem('authToken', response.data.access_token) sessionStorage.setItem('authToken', response.data.access_token)
sessionStorage.setItem('authExpiresAt', response.data.expires_at) sessionStorage.setItem('authExpiresAt', response.data.expires_at)
sessionStorage.setItem('user', response.data)
} else { } else {
setAuthenticated(false) setAuthenticated(false)
setAuthError('Failed to authenticate user.') setAuthError('Failed to authenticate user.')