Merge pull request 'Kanbante 0.46.3 — Déconnexion du menu compte locale et globale (fusion #141)' (#89) from fix/deconnexion-globale-0-46-3 into main
CI / test (push) Failing after 1s
CI / test (push) Failing after 1s
This commit was merged in pull request #89.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
## 0.46.3 — 2026-11-06 — Déconnexion du menu compte : locale **et** globale (fusion #141)
|
||||
|
||||
- **Défaut corrigé** : Kanbante était le seul hôte à brancher l'action `deconnexion` de la barre commune, mais sa branche ne faisait que naviguer vers `GET /logout` — la session locale était détruite, **la session draco (SSO) survivait** : le pont `/auth/draco` rouvrait une session Kanbante sans mot de passe. Une « déconnexion » qui ne déconnectait pas vraiment.
|
||||
- **Branchement corrigé** (`app/templates/_draco_bar.html`) : destruction d'abord de la session locale (`fetch GET /logout`), puis navigation vers la déconnexion globale de l'émettrice (`GET {draco_urls.obsigate}/sso/logout?return_to={origine}/`, nouvelle route ObsiGate 2.86.0, PR sœur) : le `jti` draco y est révoqué et le cookie effacé sur le domaine parent. Après le parcours, la session de la suite entière et la session locale Kanbante sont terminées ; le retour se fait sur la racine Kanbante (page de connexion).
|
||||
- **Test** : nouveau `tests/test_deconnexion.py` (marqueurs du branchement + disparition de l'ancien branchement local seul). Périmètre draco/barre : 33 passés (environnement local : variables `NO_PROXY`/proxy de la VM à écarter pour httpx, fonds connu).
|
||||
|
||||
## 0.46.2 — 2026-11-06 — Rôles du Hub propagés à Kanbante (HUB-19, suite du pilote ShaarIt 0.7.0)
|
||||
|
||||
Version **corrective** au sens du patron du dépôt (pas de fonction nouvelle côté métier : un garde d'accès branché sur le registre du Hub, contrat D3(a) du plan Hub v2).
|
||||
|
||||
@@ -152,8 +152,24 @@
|
||||
donc RETIRÉE : la page /profile elle-même continue
|
||||
d'exister (jetons API, réglages du compte Kanbante),
|
||||
mais elle n'est plus la cible du menu compte de la
|
||||
barre. « Déconnexion » reste relayée, inchangée. */
|
||||
if (act === "deconnexion") { location.href = "/logout"; return; }
|
||||
barre. « Déconnexion » : voir la branche ci-dessous. */
|
||||
if (act === "deconnexion") {
|
||||
/* Fusion #141 : la déconnexion n'est plus seulement
|
||||
locale. Détruire d'abord la session Kanbante
|
||||
(GET /logout), puis naviguer vers la déconnexion
|
||||
globale de l'émettrice (ObsiGate, GET /sso/logout)
|
||||
avec retour ici — le jti draco y est révoqué et le
|
||||
cookie effacé sur le domaine parent. Avant ce
|
||||
correctif, le seul /logout laissait la session SSO
|
||||
vivante : le pont /auth/draco rouvrait une session
|
||||
Kanbante sans mot de passe. */
|
||||
var retourKb = encodeURIComponent(location.origin + "/");
|
||||
var cibleKb = "{{ draco_urls.obsigate }}/sso/logout?return_to=" + retourKb;
|
||||
fetch("/logout", { credentials: "same-origin" })
|
||||
.catch(function () { })
|
||||
.finally(function () { location.href = cibleKb; });
|
||||
return;
|
||||
}
|
||||
if (act === "palette") { location.href = "/recherche"; return; }
|
||||
if (act === "alertes") { if (window.DRACO_ALERTES) { window.DRACO_ALERTES.open(); } else { location.href = "/activity"; } return; }
|
||||
/* Correctif fusion #70 : action "menu" supprimée avec le bouton trois points (console agent dans le menu de la marque). */
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
"""Déconnexion du menu compte (fusion #141) — branchement global.
|
||||
|
||||
Kanbante était le seul hôte branché, mais sa branche ne faisait que
|
||||
naviguer vers son /logout local : la session draco (SSO) survivait
|
||||
et le pont /auth/draco rouvrait une session sans mot de passe. Le
|
||||
branchement livré : destruction de la session locale (GET /logout)
|
||||
puis navigation vers la déconnexion globale de l'émettrice
|
||||
(GET /sso/logout chez ObsiGate, retour ici).
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
R = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def test_gabarit_branche_deconnexion_globale():
|
||||
gabarit = (R / "app/templates/_draco_bar.html").read_text(encoding="utf-8")
|
||||
assert 'act === "deconnexion"' in gabarit
|
||||
assert 'fetch("/logout"' in gabarit
|
||||
assert "{{ draco_urls.obsigate }}/sso/logout?return_to=" in gabarit
|
||||
# L'ancien branchement local seul a disparu.
|
||||
assert 'if (act === "deconnexion") { location.href = "/logout"; return; }' not in gabarit
|
||||
Reference in New Issue
Block a user