feat: Fusion — barre d'apps commune (#28) et pont SSO draco_session (#27)
CI / test (push) Successful in 1m37s

This commit is contained in:
Spark
2026-10-21 10:56:22 -04:00
parent 6066890bae
commit f087b41b4b
13 changed files with 635 additions and 3 deletions
+18 -1
View File
@@ -14,6 +14,15 @@ Environment variables:
KANBANTE_SESSION_SECRET HMAC key for the login session cookie
(default: derived from the credentials —
rotating the password invalidates sessions).
DRACO_SESSION_SECRET Shared secret of the dracodev SSO cookie
(``draco_session``, emitted by ObsiGate —
Fusion ACC-3). Empty (default) = SSO bridge
disabled. ``DRACO_SESSION_SECRET_PREV``
accepts the previous secret while rotating,
``DRACO_SSO_MACHINE_KEY`` authenticates the
revocation-list fetch and ``DRACO_SSO_URL``
points at the emitter (default
https://og.dracodev.net).
KANBANTE_SNAPSHOT_INTERVAL Seconds between background snapshot
refreshes (chantier B, default 120;
0 disables the refresher).
@@ -95,7 +104,7 @@ from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
APP_VERSION = "0.22.1"
APP_VERSION = "0.23.0"
def _env_bool(name: str, default: bool) -> bool:
@@ -166,6 +175,10 @@ class Settings:
zombie_days: int = 30
session_secret: str = ""
snapshot_interval: int = 120
draco_secret: str = ""
draco_secret_prev: str = ""
sso_machine_key: str = ""
sso_url: str = "https://og.dracodev.net"
@property
def auth_enabled(self) -> bool:
@@ -213,4 +226,8 @@ def get_settings() -> Settings:
zombie_days=_env_int("KANBANTE_ZOMBIE_DAYS", 30),
session_secret=os.getenv("KANBANTE_SESSION_SECRET", ""),
snapshot_interval=_env_int("KANBANTE_SNAPSHOT_INTERVAL", 120),
draco_secret=os.getenv("DRACO_SESSION_SECRET", ""),
draco_secret_prev=os.getenv("DRACO_SESSION_SECRET_PREV", ""),
sso_machine_key=os.getenv("DRACO_SSO_MACHINE_KEY", ""),
sso_url=os.getenv("DRACO_SSO_URL", "https://og.dracodev.net").rstrip("/"),
)