From 286b9008a0b875c0f6d855ea99355bc94a4737fc Mon Sep 17 00:00:00 2001 From: AshrafHosam Date: Wed, 24 Jun 2026 03:18:16 +0300 Subject: [PATCH] fix: always apply SSO token on public site, overriding stale session When opening the public site from admin panel, the old access_token in localStorage was blocking the new SSO token from being applied. Remove the stale-session guard so the incoming sso_token always wins. Also sync the _token reactive ref on auth:login so the admin portal back-link in AppHeader carries the correct token after an account switch. --- frontend/src/App.vue | 8 ++++++-- frontend/src/composables/useAuth.js | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index e028913..354856d 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -12,8 +12,12 @@ import { api } from './services/api.js' onMounted(async () => { const params = new URLSearchParams(window.location.search) const ssoToken = params.get('sso_token') - if (!ssoToken || localStorage.getItem('access_token')) return - + if (!ssoToken) return + // Always override stale session — new SSO token takes precedence + window.dispatchEvent(new Event('auth:logout')) + localStorage.removeItem('access_token') + localStorage.removeItem('refresh_token') + localStorage.removeItem('user') localStorage.setItem('access_token', ssoToken) try { const res = await api.get('/api/auth/me') diff --git a/frontend/src/composables/useAuth.js b/frontend/src/composables/useAuth.js index a98410b..1380703 100644 --- a/frontend/src/composables/useAuth.js +++ b/frontend/src/composables/useAuth.js @@ -6,7 +6,7 @@ const _token = ref(localStorage.getItem('access_token') ?? null) const _isLoggedIn = computed(() => !!_user.value) window.addEventListener('auth:logout', () => { _user.value = null; _token.value = null }) -window.addEventListener('auth:login', (e) => { _user.value = e.detail }) +window.addEventListener('auth:login', (e) => { _user.value = e.detail; _token.value = localStorage.getItem('access_token') ?? null }) function _persist(data) { localStorage.setItem('access_token', data.tokens.access_token)