@the-portland-company/shell 0.36.1 → 0.36.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2770,17 +2770,31 @@ function FrameBody({
2770
2770
  signingOutRef.current = true;
2771
2771
  broadcastLogout();
2772
2772
  signOutRef.current();
2773
+ window.setTimeout(() => {
2774
+ window.location.replace(window.location.href);
2775
+ }, 2e3);
2773
2776
  }, []);
2774
2777
  react.useEffect(
2775
2778
  () => (
2776
- // A tab that learns of a sign-out elsewhere ends its OWN session properly
2777
- // (clear cookie, RP-initiated logout at the IdP) rather than merely
2778
- // navigating away — otherwise its session cookie would outlive the
2779
- // sign-out and a later visit would silently resume it. No re-broadcast:
2780
- // the signal that woke us is already on record for everyone.
2779
+ // A tab that learns of a sign-out elsewhere forces a real NAVIGATION
2780
+ // rather than calling the app's own sign-out handler.
2781
+ //
2782
+ // Measured against production before this landed: calling the app's
2783
+ // handler did nothing at all. Apps wire it as
2784
+ // `onSignOut={() => { void signOutAction(); }}` — a server action invoked
2785
+ // outside a transition, so the `redirect()` inside it can never be
2786
+ // applied by the client and the tab just sits there. Building cross-tab
2787
+ // logout on that path made the whole feature a no-op.
2788
+ //
2789
+ // A hard navigation cannot fail that way, and it hands the decision to
2790
+ // the authority rather than guessing: the app's middleware sees a session
2791
+ // whose auth_time predates `politogy_logout_at`, treats it as revoked,
2792
+ // and redirects to Politogy ID. Server-side truth decides; the client
2793
+ // only forces the request. No re-broadcast — the signal that woke us is
2794
+ // already on record for every tab.
2781
2795
  watchLogout(() => {
2782
2796
  if (signingOutRef.current) return;
2783
- signOutRef.current();
2797
+ window.location.replace(window.location.href);
2784
2798
  })
2785
2799
  ),
2786
2800
  []