After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.
fix(auth): re-issue JWT after password change so session_version bump does not lock users out
After change-password the DB session_version was incremented while the browser
kept the old token, so every API returned 401 and the UI bounced back to login.
Also route first-login to /change-password and surface API error messages.