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
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.')