fix(ui): logout type error when user is null during locale switch (#13514)
### What? Prevent a `TypeError: Cannot read properties of null (reading 'collection')` in the admin UI when switching locales by hardening `AuthProvider.logOut`. ### Why? During locale transitions, user can briefly be null. The existing code used `user.collection` unguarded ### How? - Use `userSlug` over `user.collection`. - Always clear local auth in a `finally` block (`setNewUser(null)`, `revokeTokenAndExpire()`), regardless of request outcome. Fixes #13313 --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1211093549155962
This commit is contained in:
@@ -192,13 +192,17 @@ export function AuthProvider({
|
|||||||
|
|
||||||
const logOut = useCallback(async () => {
|
const logOut = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
await requests.post(`${serverURL}${apiRoute}/${user.collection}/logout`)
|
if (user && user.collection) {
|
||||||
setNewUser(null)
|
await requests.post(`${serverURL}${apiRoute}/${user.collection}/logout`)
|
||||||
revokeTokenAndExpire()
|
}
|
||||||
return true
|
return true
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
toast.error(`Logging out failed: ${e.message}`)
|
toast.error(`Logging out failed: ${e.message}`)
|
||||||
return false
|
return false
|
||||||
|
} finally {
|
||||||
|
// Always clear local auth state
|
||||||
|
setNewUser(null)
|
||||||
|
revokeTokenAndExpire()
|
||||||
}
|
}
|
||||||
}, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, user])
|
}, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, user])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user