fix: brancher la déconnexion du menu compte sur la déconnexion globale (fusion #141) — 7.85.3
FlowDeck CI / test (pull_request) Failing after 1s
FlowDeck CI / docker (pull_request) Skipped
FlowDeck CI / lint (push) Failing after 1s
FlowDeck CI / test (push) Failing after 1s
FlowDeck CI / docker (push) Skipped
FlowDeck CI / lint (pull_request) Failing after 10s
FlowDeck CI / test (pull_request) Failing after 1s
FlowDeck CI / docker (pull_request) Skipped
FlowDeck CI / lint (push) Failing after 1s
FlowDeck CI / test (push) Failing after 1s
FlowDeck CI / docker (push) Skipped
FlowDeck CI / lint (pull_request) Failing after 10s
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
## v7.85.3 (2026-11-06) — Déconnexion du menu compte branchée (fusion #141)
|
||||
|
||||
- **Défaut corrigé** : le bouton « Déconnexion » du menu compte de la barre commune ne faisait rien — la barre relaie l'action `deconnexion` à l'hôte et le `onAction` du gabarit (`app/templates/_draco_bar.html`) n'avait aucune branche pour elle (même défaut que la console Spark, l'hôte du signalement de Bruno).
|
||||
- **Branchement** : nouvelle branche `deconnexion` — destruction d'abord de la session locale Flowdeck (`fetch GET /auth/logout`, le même point de sortie que les liens « Log out » existants), 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 Flowdeck sont terminées ; le retour se fait sur la racine Flowdeck (page de connexion).
|
||||
- **Test** : `tests/test_draco_bar_texte.py::test_barre_deconnexion_branchee_globale` (marqueurs du branchement dans le gabarit). Périmètre draco/barre comparé à main vierge dans le même environnement : fonds identique (2 échecs `test_draco_urls_devprod` et 17 erreurs de dépendances absentes de l'environnement local, préexistants), +1 test passant.
|
||||
|
||||
## v7.85.2 (2026-11-06) — HUB-19 : propagation des rôles du Hub (registre D3(a))
|
||||
|
||||
- **Client des rôles du Hub** (`app/services/hub_roles.py`, nouveau) : portage Python du pilote ShaarIt 0.7.0 (`hub_roles.rs`). À l'ouverture de session draco, consultation de `GET {hub}/api/roles/flowdeck` — en-tête Cookie complet de la requête relayé tel quel, `Accept: application/json`, délai 2 s. URL du Hub résolue comme la barre commune (`draco_urls.hub_url()` : explicite `HUB_URL` > hôte de la requête > dérivation par l'hôte de l'agent > défaut officiel), jamais d'URL dev figée. Cache mémoire par `sub`, TTL 60 s, horodatage posé **avant** l'appel : un échec conserve l'ancien cache, pas de rafale. Toute erreur (401/404/réseau/JSON illisible/rôle hors ensemble {`aucun`, `utilisateur`, `administrateur`}) = rôle **inconnu** → comportement actuel conservé, intégralement.
|
||||
|
||||
@@ -132,6 +132,20 @@
|
||||
return;
|
||||
}
|
||||
if (act === "palette") { location.href = "/recherche"; return; }
|
||||
if (act === "deconnexion") {
|
||||
/* Fusion #141 : détruire d'abord la session locale
|
||||
Flowdeck (GET /auth/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 : la session de la suite entière se termine. */
|
||||
var retourFd = encodeURIComponent(location.origin + "/");
|
||||
var cibleFd = "{{ draco_urls().obsigate }}/sso/logout?return_to=" + retourFd;
|
||||
fetch("/auth/logout", { credentials: "same-origin" })
|
||||
.catch(function () { })
|
||||
.finally(function () { location.href = cibleFd; });
|
||||
return;
|
||||
}
|
||||
/* Correctif fusion #70 : action "menu" supprimée avec le bouton trois points (console agent dans le menu de la marque). Nonce CSP du script inchangé. */
|
||||
if (act === "spark") {
|
||||
if (window.DRACO_PANNEAU) { window.DRACO_PANNEAU.toggle(); }
|
||||
|
||||
@@ -33,6 +33,18 @@ def test_aucun_texte_chantier_rendu():
|
||||
assert rendu.lstrip().startswith("<link")
|
||||
|
||||
|
||||
def test_barre_deconnexion_branchee_globale():
|
||||
"""Déconnexion du menu compte (fusion #141) : le gabarit branche
|
||||
l'action « deconnexion » — destruction de la session locale
|
||||
(/auth/logout) puis navigation vers la déconnexion globale de
|
||||
l'émettrice (GET /sso/logout chez ObsiGate, retour ici). Avant le
|
||||
correctif, aucune branche ne traitait l'action : clic sans effet."""
|
||||
gabarit = (ROOT / "app/templates/_draco_bar.html").read_text()
|
||||
assert 'act === "deconnexion"' in gabarit
|
||||
assert 'fetch("/auth/logout"' in gabarit
|
||||
assert '{{ draco_urls().obsigate }}/sso/logout?return_to=' in gabarit
|
||||
|
||||
|
||||
def test_barre_v020_onglet_shaarit_et_garde_data_theme():
|
||||
"""Barre v0.2.0 (commons @70c837a) : onglet ShaarIt entre Kanbante
|
||||
et l'onglet agent, logo fourni tel quel, CSS vendangé verbatim
|
||||
|
||||
Reference in New Issue
Block a user