feat: ?logoff in der URL loest die Abmeldung zusaetzlich zum Button aus

Der Abmelden-Button blendet sich erst nach dem ersten erfolgreichen
Status-Abruf ein - bei zugestopftem/schmalem Header oder einer alten, nicht
neu geladenen Seite war er dadurch schwer zu finden. ".../?logoff" an die
Leitstand-URL angehaengt loest denselben Ablauf jetzt garantiert aus,
unabhaengig vom Button. Query-String wird danach aus der URL entfernt,
damit ein Reload nicht erneut abmeldet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EbdWYnDtyMgxsq4eN1WnrQ
This commit is contained in:
Jeuner 2026-08-28 18:59:24 +02:00
parent 37a5a78b15
commit be11baf52b

View file

@ -969,13 +969,18 @@ sicherBtn.onclick=()=>{
// nachweislich ihren Credential-Cache fuer diesen Ursprung, ein Reload // nachweislich ihren Credential-Cache fuer diesen Ursprung, ein Reload
// danach zeigt wieder den Anmelde-Dialog. Funktioniert in den gaengigen // danach zeigt wieder den Anmelde-Dialog. Funktioniert in den gaengigen
// Browsern, ist aber kein Ersatz fuer "Fenster schliessen" bei geteilten Rechnern. // Browsern, ist aber kein Ersatz fuer "Fenster schliessen" bei geteilten Rechnern.
document.getElementById('logoutBtn').onclick=()=>{ // Zwei Ausloeser: der Button (falls sichtbar) UND ?logoff in der URL - Zweiteres
// funktioniert immer, unabhaengig davon, ob der Button im Header gerade zu
// sehen ist (z.B. bei zugestopftem Header auf schmalen Bildschirmen).
function abmelden(){
document.cookie='zugang=; Max-Age=0; Path=/'; document.cookie='zugang=; Max-Age=0; Path=/';
const xhr=new XMLHttpRequest(); const xhr=new XMLHttpRequest();
xhr.open('GET','/',true,'logout','logout'); xhr.open('GET','/',true,'logout','logout');
xhr.onloadend=()=>location.reload(); xhr.onloadend=()=>{location.href=location.pathname};
xhr.send(); xhr.send();
}; }
document.getElementById('logoutBtn').onclick=abmelden;
if(new URLSearchParams(location.search).has('logoff'))abmelden();
// Kategorisierungs-Modell (Dropdown oben rechts) - Wechsel greift sofort // Kategorisierungs-Modell (Dropdown oben rechts) - Wechsel greift sofort
// beim naechsten Anruf, kein Neustart des Watchers noetig (siehe // beim naechsten Anruf, kein Neustart des Watchers noetig (siehe