Ajoute la régénèse du token de présence Tasker et élargit le bandeau de test ntfy

Le bouton "Régénérer le token" de la carte Tasker crée un nouveau token
secret et invalide immédiatement les anciennes URLs, au cas où elles
auraient fuité. La fonction regenerate_presence_token préserve les
autres réglages notif (topic, serveur, jeton d'accès, plage). Au passage
le message de retour du bouton de test ntfy occupe désormais toute la
largeur de la carte au lieu d'être limité à 420px.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
Jacquin Antoine
2026-07-20 00:05:34 +02:00
parent 076b5a4fa2
commit 1d8a273ffb
4 changed files with 113 additions and 8 deletions

View File

@ -17,6 +17,7 @@ from models import (
load_config, load_week_pointages, save_week_pointages, load_conges,
toggle_conge, list_all_weeks,
load_notif_config, save_notif_config, find_user_by_token, save_presence,
regenerate_presence_token,
load_auth, save_auth, find_user_by_reset_token,
load_plages, save_plages, heures_jour_min,
append_log, load_logs,
@ -630,6 +631,33 @@ def settings_test_ntfy(request: Request):
)
@app.post("/settings/regenerate-presence-token", response_class=HTMLResponse)
def settings_regenerate_presence_token(request: Request):
user_id = _get_user(request)
if not user_id:
return RedirectResponse("/login", status_code=302)
new_token = regenerate_presence_token(user_id)
logger.warning("token de présence régénéré pour %r", user_id)
base_url = str(request.base_url).rstrip("/")
arrivee_url = f"{base_url}/presence/{new_token}/arrivee"
depart_url = f"{base_url}/presence/{new_token}/depart"
return HTMLResponse(
f'<div id="presence-urls" hx-swap-oob="true">'
f'<div class="settings-urlrow">'
f'<span class="settings-urllabel">Arrivée</span>'
f'<code class="settings-url">{arrivee_url}</code>'
f'</div>'
f'<div class="settings-urlrow">'
f'<span class="settings-urllabel">Départ</span>'
f'<code class="settings-url">{depart_url}</code>'
f'</div>'
f'<div class="settings-saved">Token régénéré. Mets à jour les URLs dans Tasker.</div>'
f'</div>'
)
@app.post("/settings/plages", response_class=HTMLResponse)
def settings_plages_save(
request: Request,