diff --git a/dist/index.html b/dist/index.html index 1e1a93a..7cbcdd3 100644 --- a/dist/index.html +++ b/dist/index.html @@ -6,7 +6,7 @@ Otimizador de Corte - TSCUT - + diff --git a/src/main.js b/src/main.js index ee589f3..baf58fa 100644 --- a/src/main.js +++ b/src/main.js @@ -17,28 +17,47 @@ async function protectPage() { const urlParams = new URLSearchParams(window.location.search); const isCallback = urlParams.has('code') && urlParams.has('state'); - // Usar a origem exata sem assumir caminhos para evitar desvios no Logto - const exactRedirectUri = window.location.origin + '/'; + // Forçar a URI exata registrada no Logto para evitar variações de origin + const exactRedirectUri = 'https://tscut.reifonas.cloud/'; - console.log('TSCUT Auth: Verificando estado...', { isCallback, origin: window.location.origin }); + console.log('TSCUT Auth: Inicializando...', { + isCallback, + href: window.location.href, + storageKeys: Object.keys(sessionStorage).filter(k => k.includes('logto')) + }); if (isCallback) { try { - console.log('TSCUT Auth: Processando callback...', exactRedirectUri); + console.log('TSCUT Auth: Processando callback com URI:', exactRedirectUri); + + // Pequeno delay para garantir que o storage foi persistido pelo navegador + await new Promise(r => setTimeout(r, 100)); + await logtoClient.handleSignInCallback(exactRedirectUri); - console.log('TSCUT Auth: Login bem sucedido!'); + console.log('TSCUT Auth: Login OK! Redirecionando...'); window.location.assign('/'); } catch (error) { style.remove(); + const logtoState = sessionStorage.getItem(`logto:${import.meta.env.VITE_LOGTO_APP_ID}:state`); + document.body.innerHTML = `
-

Erro de Autenticação Logto

-

${error.message}

-
-

Dica: Se você estiver vendo "Missing state", verifique se os cookies e o armazenamento local estão habilitados para este site.

- +

Falha na Identificação Industrial

+

+ Erro: ${error.message} +

+
+ Debug Info:
+ - AppID: ${import.meta.env.VITE_LOGTO_APP_ID}
+ - URI Usada: ${exactRedirectUri}
+ - State na URL: ${urlParams.get('state')?.substring(0, 10)}...
+ - State no Storage: ${logtoState ? 'Presente' : 'AUSENTE'}
+
+
`; - console.error('Falha no callback do Logto:', error); + console.error('Falha crítica no callback:', error); } return; } @@ -46,17 +65,15 @@ async function protectPage() { try { const isAuthenticated = await logtoClient.isAuthenticated(); if (!isAuthenticated) { - console.log('TSCUT Auth: Não autenticado. Redirecionando para login...'); + console.log('TSCUT Auth: Iniciando fluxo de login...'); await logtoClient.signIn(exactRedirectUri); return; } - // Se chegou aqui, está logado. Mostramos o app. style.remove(); console.log('TSCUT: Acesso autorizado.'); } catch (err) { - console.error('Erro ao verificar autenticação:', err); - // Em caso de erro na verificação, tentamos o login novamente + console.error('Erro na verificação de sessão:', err); await logtoClient.signIn(exactRedirectUri); } }