fix(auth): extrair bs_session da URL search/hash para SSO instantaneo
This commit is contained in:
+22
-2
@@ -70,9 +70,29 @@ async function syncUserToProfile(user: LogtoUser): Promise<string> {
|
|||||||
// Detecta sessão ativa do BrainSteel Hub (Single Sign-On unificado)
|
// Detecta sessão ativa do BrainSteel Hub (Single Sign-On unificado)
|
||||||
function getHubUser(): LogtoUser | null {
|
function getHubUser(): LogtoUser | null {
|
||||||
try {
|
try {
|
||||||
|
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');
|
const raw = localStorage.getItem('brainsteel_session');
|
||||||
if (!raw) return null;
|
if (raw) session = JSON.parse(raw);
|
||||||
const session = JSON.parse(raw);
|
}
|
||||||
|
|
||||||
if (!session || (!session.token && !session.isMaster && !session.user)) return null;
|
if (!session || (!session.token && !session.isMaster && !session.user)) return null;
|
||||||
|
|
||||||
const u = session.user || {};
|
const u = session.user || {};
|
||||||
|
|||||||
Reference in New Issue
Block a user