Knopf war unlesbar, und der Code wird jetzt bei jedem Schliessen neu verlangt
Zwei Rueckmeldungen vom 22.08.2026, beide behoben und mit Tests abgesichert.
1) "das sieht nicht gut aus" (Bildschirmfoto des Hauptknopfs)
Ursache: ".wd a" ist Klasse+Element und damit spezifischer als die reine
Knopfklasse ".wd-btn--haupt". Die Textfarbe des Knopfs wurde dadurch
ueberstimmt -- hellblaue Schrift auf hellblauem Grund, praktisch
unlesbar. Derselbe Spezifitaetsfehler wie zuvor bei den Namen auf der
Zugangswand. Fix: ".wd a:not(.wd-btn)" plus zweistufig geschriebene
Knopfregeln, damit das nicht wieder passieren kann.
2) "das sieht lang gezogen aus"
Die Pillenform (border-radius 999px) laesst breite Knoepfe
auseinandergezogen wirken, weil der Radius optisch mit der Breite
mitwaechst. Jetzt fester Radius von 14px -- gleiche Form bei jeder
Breite, ruhiger und hochwertiger.
3) "ich will das ich jedes mal den code gefragt werde wenn man die seite
zu macht"
Das Sitzungs-Cookie allein reicht dafuer nicht: Browser stellen genau
solche Cookies beim Wiederherstellen von Tabs zurueck ("Dort
fortfahren, wo du aufgehoert hast"), man landet dann ohne Codeabfrage
wieder mitten in der Seite. Zusaetzlich jetzt eine Sitzungsmarke im
sessionStorage, die beim echten Schliessen verschwindet. Fehlt sie bei
vorhandenem Cookie, wird die Sitzung serverseitig beendet und zur
Zugangswand geleitet. Token-Notbremse von 24 auf 8 Stunden gesenkt.
13/13 Tests im echten Browser, inklusive Schutz vor Endlosschleife.
DEPLOY.md: zwei Checkouts auf dem Server dokumentiert (/home/dogiweb und
/home/dogiintern) und der Vorfall, dass /webdesign nach dem Pull kurz ohne
Zugangsschutz erreichbar war, weil der Dienstneustart fehlte.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+61
-1
@@ -761,10 +761,70 @@
|
||||
}
|
||||
|
||||
/* ===================================================================
|
||||
8. START
|
||||
8. ZUGANG BEIM SCHLIESSEN DER SEITE BEENDEN
|
||||
|
||||
Wunsch vom 22.08.2026: "ich will das ich jedes mal den code gefragt
|
||||
werde wenn man die seite zu macht."
|
||||
|
||||
Warum das Sitzungs-Cookie allein dafür NICHT reicht:
|
||||
Ein Cookie ohne Ablaufdatum wirft der Browser beim Schließen zwar weg
|
||||
— aber "Tabs wiederherstellen" (Chrome: "Dort fortfahren, wo du
|
||||
aufgehört hast", Android beim erneuten Öffnen, iOS beim Zurückholen
|
||||
einer App aus dem Speicher) stellt genau diese Cookies wieder her.
|
||||
Man landet dann ohne Codeabfrage wieder mitten in der Seite.
|
||||
|
||||
Deshalb zusätzlich eine Kennung im sessionStorage. Der ist an die
|
||||
Browser-Sitzung des Tabs gebunden und ist beim echten Schließen weg.
|
||||
Fehlt die Kennung, obwohl ein Cookie da ist, war die Seite zu →
|
||||
Sitzung serverseitig beenden und zurück zur Zugangswand.
|
||||
|
||||
Ehrliche Einschränkung: Wer die Adresse in einem NEUEN Tab von Hand
|
||||
eingibt, hat dort ebenfalls einen leeren sessionStorage und wird
|
||||
erneut gefragt. Das ist der Preis dafür, dass es beim Schließen
|
||||
zuverlässig greift — und entspricht dem, was gewünscht war.
|
||||
=================================================================== */
|
||||
var SITZUNGS_MARKE = "wd-sitzung-aktiv";
|
||||
|
||||
function sitzungsMarkeSetzen() {
|
||||
try { sessionStorage.setItem(SITZUNGS_MARKE, "1"); } catch (e) { /* egal */ }
|
||||
}
|
||||
|
||||
function hatRollenCookie() {
|
||||
return document.cookie.split(";").some(function (s) {
|
||||
return s.trim().indexOf("dogiwd_rolle=") === 0;
|
||||
});
|
||||
}
|
||||
|
||||
function zugangPruefen() {
|
||||
// Auf der Zugangswand selbst gibt es nichts zu beenden.
|
||||
if (location.pathname.indexOf("/webdesign/zugang.html") === 0) return;
|
||||
|
||||
var marke = null;
|
||||
try { marke = sessionStorage.getItem(SITZUNGS_MARKE); } catch (e) { return; }
|
||||
if (marke) return; // laufende Sitzung, alles gut
|
||||
|
||||
/* Kein Rollen-Cookie -> es gab hier noch nie eine Anmeldung in diesem
|
||||
Browser (oder der Bereich ist freigegeben). Dann NICHT abmelden:
|
||||
sonst würde eine gerade erst begonnene Sitzung sofort beendet. */
|
||||
if (!hatRollenCookie()) { sitzungsMarkeSetzen(); return; }
|
||||
|
||||
/* Cookie da, Marke weg -> die Seite war zwischendurch zu. */
|
||||
fetch("/webdesign/zugang-beenden", { method: "POST" })
|
||||
.catch(function () { /* auch ohne Antwort weiterleiten */ })
|
||||
.then(function () {
|
||||
location.replace(
|
||||
"/webdesign/zugang.html?next=" + encodeURIComponent(location.pathname + location.search)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/* ===================================================================
|
||||
9. START
|
||||
=================================================================== */
|
||||
function start() {
|
||||
document.body.classList.add("wd");
|
||||
zugangPruefen();
|
||||
sitzungsMarkeSetzen();
|
||||
uebersetzeSeite();
|
||||
zeichneKopf();
|
||||
zeichneFuss();
|
||||
|
||||
Reference in New Issue
Block a user