Merge pull request '7.84.12 — correctif : ShaarIt joignable depuis Flowdeck (CSP connect-src)' (#47) from fix/recherche-shaarit-csp into main
FlowDeck CI / lint (push) Failing after 3s
FlowDeck CI / test (push) Failing after 30m28s
FlowDeck CI / docker (push) Skipped

This commit was merged in pull request #47.
This commit is contained in:
2026-11-04 13:43:41 -05:00
3 changed files with 26 additions and 2 deletions
+1 -1
View File
@@ -1 +1 @@
7.84.11 7.84.12
+8 -1
View File
@@ -178,10 +178,17 @@ class ContentSecurityPolicyMiddleware(BaseHTTPMiddleware):
# notifications des applications soeurs depuis cet hôte ; # notifications des applications soeurs depuis cet hôte ;
# leurs origines rejoignent connect-src (même résolution # leurs origines rejoignent connect-src (même résolution
# draco_urls que les liens de la barre et frame-src). # draco_urls que les liens de la barre et frame-src).
# Fusion #111 : la recherche fédérée appelle en plus
# l'API de ShaarIt depuis la page /recherche — sans son
# origine ici, le navigateur bloque l'appel et la section
# ShaarIt affichait « Injoignable depuis cet hôte (CORS ou
# réseau) » alors que le CORS de ShaarIt était correct
# (retour d'usage du 2026-11-04).
_toutes69 = draco_urls.toutes() _toutes69 = draco_urls.toutes()
sisters = " ".join(sorted({ sisters = " ".join(sorted({
draco_urls.origine(_toutes69[k]) draco_urls.origine(_toutes69[k])
for k in ("obsigate", "flowdeck", "tiktak", "kanbante") for k in ("obsigate", "flowdeck", "tiktak", "kanbante",
"shaarit")
} - {""})) } - {""}))
response.headers[self.CSP_HEADER] = self.CSP_VALUE.format( response.headers[self.CSP_HEADER] = self.CSP_VALUE.format(
nonce=nonce, host=host, agent=agent, sisters=sisters nonce=nonce, host=host, agent=agent, sisters=sisters
+17
View File
@@ -0,0 +1,17 @@
"""Recherche fédérée « Rechercher partout » (fusion #111) — garde-fous
côté Flowdeck : l'API /api/search et les origines sœurs sont couvertes
par les suites Node et les tests CORS ; ici, la CSP des pages, qui
conditionne les appels cross-origin de la page /recherche."""
def test_csp_connect_src_contient_shaarit(client):
"""La CSP des pages doit autoriser l'origine de ShaarIt en
connect-src, sinon le navigateur bloque l'appel de la page
/recherche avant même le CORS et la section ShaarIt affiche
« Injoignable depuis cet hôte » (retour d'usage du 2026-11-04 :
la liste des sœurs du connect-src, écrite pour les Alertes
#69, n'avait pas été étendue à ShaarIt)."""
r = client.get("/")
csp = r.headers.get("content-security-policy", "")
assert "connect-src" in csp
assert "https://shaarit.dracodev.net" in csp, csp