From ebaf820e5c1dc44c0a62479d2c3e6914a4380e69 Mon Sep 17 00:00:00 2001 From: Marcos Reifonas Date: Thu, 24 Sep 2026 08:27:10 -0300 Subject: [PATCH] fix(auth): extrair bs_session da URL search/hash para SSO instantaneo --- src/hooks/useAuth.tsx | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/hooks/useAuth.tsx b/src/hooks/useAuth.tsx index a3d9052..8a8d1f5 100644 --- a/src/hooks/useAuth.tsx +++ b/src/hooks/useAuth.tsx @@ -70,9 +70,29 @@ async function syncUserToProfile(user: LogtoUser): Promise { // Detecta sessão ativa do BrainSteel Hub (Single Sign-On unificado) function getHubUser(): LogtoUser | null { try { - const raw = localStorage.getItem('brainsteel_session'); - if (!raw) return null; - const session = JSON.parse(raw); + let session: any = null; + + // 1. Tenta ler parâmetro bs_session diretamente da URL (search ou hash) + const urlParams = new URLSearchParams(window.location.search); + const hashParams = new URLSearchParams(window.location.hash.replace(/^#/, '')); + const bsParam = urlParams.get('bs_session') || hashParams.get('bs_session'); + if (bsParam) { + try { + session = JSON.parse(decodeURIComponent(escape(atob(bsParam)))); + if (session) { + localStorage.setItem('brainsteel_session', JSON.stringify(session)); + } + } catch (e) { + console.warn('[Hub SSO] Erro ao decodificar bs_session da URL:', e); + } + } + + // 2. Se não achou na URL, lê do localStorage + if (!session) { + const raw = localStorage.getItem('brainsteel_session'); + if (raw) session = JSON.parse(raw); + } + if (!session || (!session.token && !session.isMaster && !session.user)) return null; const u = session.user || {};