chore(tenants): conteudo de publico/ atualizado

This commit is contained in:
deploy
2026-10-07 20:59:30 +00:00
parent 03e16ee015
commit 82eed86423
2 changed files with 54 additions and 8 deletions
+27 -4
View File
@@ -3782,7 +3782,7 @@ data:
</main>
<script src="/publico/painel.js?v=2.90"></script>
<script src="/publico/painel.js?v=2.91"></script>
</body>
</html>
@@ -3940,7 +3940,9 @@ data:
function usarTokens(d) {
if (!d || !d.access_token) throw new Error("resposta sem token");
cred = { tipo: "login", acesso: d.access_token,
renovacao: d.refresh_token || (cred && cred.renovacao) || null };
renovacao: d.refresh_token || (cred && cred.renovacao) || null,
// So para o "Sair" (id_token_hint): sem ele o Keycloak pede confirmacao numa tela fora do padrao.
identidade: d.id_token || (cred && cred.identidade) || null };
agendarRenovacao(Number(d.expires_in));
}
@@ -4031,13 +4033,33 @@ data:
naPorta("A sessão expirou. Entre de novo.");
}
/* Saida por POST (07/10/2026): com o `id_token_hint` o Keycloak encerra a sessao sem a tela de
confirmacao. Vai no CORPO de um formulario, e nao na URL, para o token nao ficar no historico do
navegador nem em log de acesso. Exige `form-action` com o emissor na CSP do /painel-do-dono. */
function sairPorFormulario(identidade) {
if (typeof window.__atmSairPorFormulario === "function") { window.__atmSairPorFormulario(identidade); return; }
var f = document.createElement("form");
f.method = "POST";
f.action = OIDC.EMISSOR + "/protocol/openid-connect/logout";
var campos = { client_id: OIDC.CLIENTE, post_logout_redirect_uri: retorno(), id_token_hint: identidade };
Object.keys(campos).forEach(function (k) {
var i = document.createElement("input");
i.type = "hidden"; i.name = k; i.value = campos[k];
f.appendChild(i);
});
document.body.appendChild(f);
f.submit();
}
function sairDoLogin() {
var identidade = cred && cred.identidade;
cred = null;
pararRenovacao();
esquecerSessao();
// Encerra tambem a sessao NO KEYCLOAK: limpar so daqui deixaria o proximo
// "Entrar" passar direto, e quem clicou em sair esperava o contrario.
// Sem `id_token_hint` (seria token na URL): o Keycloak pede confirmacao.
if (identidade) { sairPorFormulario(identidade); return; }
// Sem id_token (nao deveria acontecer com o login): o Keycloak pede confirmacao.
navegar(OIDC.EMISSOR + "/protocol/openid-connect/logout?" + new URLSearchParams({
client_id: OIDC.CLIENTE, post_logout_redirect_uri: retorno() }).toString());
}
@@ -4971,7 +4993,8 @@ data:
}
function negar() {
cred = null; // o token dessa conta nao serve a esta tela
// O token dessa conta nao serve a esta tela; fica so o id_token, para o "Sair" encerrar sem confirmacao.
cred = cred && cred.identidade ? { tipo: "saida", identidade: cred.identidade } : null;
pararRenovacao();
esquecerSessao();
mostrar(negado);
+27 -4
View File
@@ -3782,7 +3782,7 @@ data:
</main>
<script src="/publico/painel.js?v=2.90"></script>
<script src="/publico/painel.js?v=2.91"></script>
</body>
</html>
@@ -3940,7 +3940,9 @@ data:
function usarTokens(d) {
if (!d || !d.access_token) throw new Error("resposta sem token");
cred = { tipo: "login", acesso: d.access_token,
renovacao: d.refresh_token || (cred && cred.renovacao) || null };
renovacao: d.refresh_token || (cred && cred.renovacao) || null,
// So para o "Sair" (id_token_hint): sem ele o Keycloak pede confirmacao numa tela fora do padrao.
identidade: d.id_token || (cred && cred.identidade) || null };
agendarRenovacao(Number(d.expires_in));
}
@@ -4031,13 +4033,33 @@ data:
naPorta("A sessão expirou. Entre de novo.");
}
/* Saida por POST (07/10/2026): com o `id_token_hint` o Keycloak encerra a sessao sem a tela de
confirmacao. Vai no CORPO de um formulario, e nao na URL, para o token nao ficar no historico do
navegador nem em log de acesso. Exige `form-action` com o emissor na CSP do /painel-do-dono. */
function sairPorFormulario(identidade) {
if (typeof window.__atmSairPorFormulario === "function") { window.__atmSairPorFormulario(identidade); return; }
var f = document.createElement("form");
f.method = "POST";
f.action = OIDC.EMISSOR + "/protocol/openid-connect/logout";
var campos = { client_id: OIDC.CLIENTE, post_logout_redirect_uri: retorno(), id_token_hint: identidade };
Object.keys(campos).forEach(function (k) {
var i = document.createElement("input");
i.type = "hidden"; i.name = k; i.value = campos[k];
f.appendChild(i);
});
document.body.appendChild(f);
f.submit();
}
function sairDoLogin() {
var identidade = cred && cred.identidade;
cred = null;
pararRenovacao();
esquecerSessao();
// Encerra tambem a sessao NO KEYCLOAK: limpar so daqui deixaria o proximo
// "Entrar" passar direto, e quem clicou em sair esperava o contrario.
// Sem `id_token_hint` (seria token na URL): o Keycloak pede confirmacao.
if (identidade) { sairPorFormulario(identidade); return; }
// Sem id_token (nao deveria acontecer com o login): o Keycloak pede confirmacao.
navegar(OIDC.EMISSOR + "/protocol/openid-connect/logout?" + new URLSearchParams({
client_id: OIDC.CLIENTE, post_logout_redirect_uri: retorno() }).toString());
}
@@ -4971,7 +4993,8 @@ data:
}
function negar() {
cred = null; // o token dessa conta nao serve a esta tela
// O token dessa conta nao serve a esta tela; fica so o id_token, para o "Sair" encerrar sem confirmacao.
cred = cred && cred.identidade ? { tipo: "saida", identidade: cred.identidade } : null;
pararRenovacao();
esquecerSessao();
mostrar(negado);