Ajoute le support d'un jeton d'accès pour les serveurs ntfy protégés

Certains serveurs ntfy auto-hébergés (ex: ntfy.arkel.fr) renvoient
403 Forbidden sans authentification. Un nouveau champ "Jeton d'accès"
(optionnel, type password) sur /settings permet de renseigner un token
qui sera envoyé comme "Authorization: Bearer ..." à chaque publication,
pour les rappels réels comme pour le bouton de test. La page /aide
documente le cas 403 et la marche à suivre.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
Jacquin Antoine
2026-07-20 00:01:12 +02:00
parent 2ee317a46e
commit 076b5a4fa2
6 changed files with 101 additions and 8 deletions

View File

@ -563,6 +563,7 @@ def settings_page(request: Request):
"current_user": user_id,
"ntfy_topic": notif.get("ntfy_topic") or "",
"ntfy_server": notif.get("ntfy_server") or "https://ntfy.sh",
"ntfy_token": notif.get("ntfy_token") or "",
"rappel_debut_h": notif.get("rappel_debut_h", 7),
"rappel_fin_h": notif.get("rappel_fin_h", 20),
"arrivee_url": f"{base_url}/presence/{notif['token']}/arrivee",
@ -578,6 +579,7 @@ def settings_page(request: Request):
def settings_save(
request: Request, ntfy_topic: str = Form(""), ntfy_server: str = Form(""),
rappel_debut_h: int = Form(7), rappel_fin_h: int = Form(20),
ntfy_token: str = Form(""),
):
user_id = _get_user(request)
if not user_id:
@ -587,10 +589,11 @@ def settings_save(
rappel_fin_h = max(rappel_debut_h + 1, min(24, rappel_fin_h))
logger.info(
"réglages notif mis à jour: user_id=%r ntfy_topic=%r ntfy_server=%r plage=%sh-%sh",
"réglages notif mis à jour: user_id=%r ntfy_topic=%r ntfy_server=%r plage=%sh-%sh token=%s",
user_id, ntfy_topic, ntfy_server, rappel_debut_h, rappel_fin_h,
"(défini)" if ntfy_token.strip() else "(vide)",
)
save_notif_config(user_id, ntfy_topic, ntfy_server, rappel_debut_h, rappel_fin_h)
save_notif_config(user_id, ntfy_topic, ntfy_server, rappel_debut_h, rappel_fin_h, ntfy_token)
return RedirectResponse("/settings?saved=1", status_code=303)
@ -616,7 +619,7 @@ def settings_test_ntfy(request: Request):
ok = send_ntfy(
server, topic,
"Ceci est une notification de test — ta configuration ntfy fonctionne.",
"Test pointeuse", user_id=user_id,
"Test pointeuse", user_id=user_id, token=notif.get("ntfy_token", ""),
)
cls = "settings-saved" if ok else "settings-error"
msg = ("Notification envoyée. Vérifie ton téléphone, elle doit arriver en quelques secondes."