// Playwish – Admin-Login "use strict"; let schutz = { token: async () => null, reset() {}, bereit: () => true }; // Turnstile (falls aktiv) window.PlaywishTurnstile.einrichten(document.getElementById("turnstile"), "login").then((s) => { schutz = s; }); document.getElementById("login").addEventListener("submit", async (ereignis) => { ereignis.preventDefault(); const fehler = document.getElementById("fehler"); const knopf = ereignis.target.querySelector("button"); fehler.textContent = ""; knopf.disabled = true; try { if (!schutz.bereit()) knopf.textContent = "Sicherheitsprüfung …"; const turnstile = await schutz.token(); knopf.textContent = "Anmelden …"; const antwort = await fetch("/admin/login", { method: "POST", credentials: "same-origin", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ password: document.getElementById("passwort").value, turnstile }), }).finally(() => schutz.reset()); if (antwort.ok) { location.href = "/admin"; return; } let meldung = "Anmeldung fehlgeschlagen."; try { meldung = (await antwort.json()).detail || meldung; } catch (_) { /* leer */ } fehler.textContent = meldung; } catch (_) { fehler.textContent = "Keine Verbindung zum Server."; } knopf.textContent = "Anmelden"; knopf.disabled = false; });