Verwaltung: eigens gestalteter Abmelde-Button rechts über der Hero-Kiste

Neuer Endpunkt POST /gate-logout (functions/_middleware.js) löscht alle drei Zugangs-Cookies auf
einmal (normale 90-Tage-Sitzung, Rollen-Anzeige, tägliche Verwaltungs-Sitzung) — "abmelden"
bedeutet also wirklich abmelden von allem, nicht nur einen Teil der Schranke offen lassen. Button
im selben "besonderen" Look wie die Hero-Kiste darunter (wandernder Verlaufsrand in den drei
Markenfarben + Funkeln) statt eines schlichten Standard-Buttons.

Per curl (Cookie-Löschung + anschließende 302-Sperre auf /verwaltung/ und /) und per echtem
Browser-Klicktest (Playwright) end-to-end verifiziert.
This commit is contained in:
qcigano
2026-08-04 15:49:00 +02:00
parent ea9a2954d0
commit 99ddd43519
3 changed files with 93 additions and 0 deletions
+23
View File
@@ -50,6 +50,17 @@ const lang: Locale = "de";
so, auch wenn der Rest der Seite mal öffentlich wird. Alles unten sind ECHTE
Bestellungen aus der Datenbank, live vom Checkout befüllt.
</p>
{/* Abmelde-Button (04.08.2026, auf ausdrücklichen Wunsch): rechts über der Hero-Kiste,
eigens "speziell" gestaltet (wandernder Verlaufsrand + Funkeln, siehe .verwaltung-logout-btn
in global.css) — passend zum Rest der Seite, statt eines schlichten Standard-Buttons.
Löscht beim Klick ALLE drei Zugangs-Cookies (normale Sitzung, Rollen-Anzeige, tägliche
Verwaltungs-Sitzung) über POST /gate-logout und springt danach zur Zugangscode-Seite. */}
<div class="verwaltung-topbar">
<button type="button" class="verwaltung-logout-btn" id="verwaltung-logout-btn">
<span class="verwaltung-logout-sparkle" aria-hidden="true">✨</span>
<span aria-hidden="true">🚪</span> Abmelden
</button>
</div>
<div class="verwaltung-hero">
<span class="verwaltung-hero-sparkle verwaltung-hero-sparkle-1" aria-hidden="true">✨</span>
<span class="verwaltung-hero-sparkle verwaltung-hero-sparkle-2" aria-hidden="true">✨</span>
@@ -480,6 +491,18 @@ const lang: Locale = "de";
});
aktualisiereToggleUI();
// ── Abmelden: löscht serverseitig alle drei Zugangs-Cookies (siehe POST /gate-logout in
// functions/_middleware.js) und springt danach zur Zugangscode-Seite. Läuft bewusst OHNE
// Rückfragedialog (gleiches Verhalten wie der Logout-Button im Kundenkonto). ──
const logoutBtn = document.getElementById("verwaltung-logout-btn");
logoutBtn?.addEventListener("click", () => {
logoutBtn.disabled = true;
logoutBtn.textContent = "Wird abgemeldet …";
fetch("/gate-logout", { method: "POST" })
.catch(() => {})
.finally(() => { window.location.href = "/gate"; });
});
// ── Meilenstein-Feier: Konfetti + Banner, sobald eine runde Bestell-Gesamtzahl erreicht wird
// (10er-Schritte bis 100, 25er bis 500, danach 50er). Zählt ALLE Bestellungen (auch
// stornierte/noch unbezahlte) — es geht um "die wievielte Bestellung ist reingekommen",