feat(portal): redirect to return_to on expired_jwt_token - #2
Merged
Conversation
When the customer portal JWT expires, the Apollo error handler now reads the ?return_to query param off the current URL and redirects there with ?refresh=1 appended. This lets a host app self-heal stale portal tabs by generating a fresh portal URL on the refresh=1 visit. If return_to isn't in the URL (token was minted without it), the current behavior is unchanged — sections render the generic "Something went wrong" state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a customer-portal JWT expires (12h TTL), every GraphQL query errors with expired_jwt_token and the user sees broken Something went wrong cards in each section. They have no way to recover without going back to the host app.
This PR adds a recovery path: if the portal URL was minted with return_to=, the Apollo error handler bounces the user there with refresh=1 appended. The host app then generates a fresh portal URL — same browser tab, no error screen.
Behavior
Companion changes
Test plan