Admin: eigenen Einladungslink festlegen

Statt des zufälligen Links kann der Admin einen sprechenden Link wählen
(z. B. /z/sommerfest2026, mind. 6 Zeichen: A–Z, a–z, 0–9, - und _).
Alte Zugänge werden dabei ungültig; der QR-Code passt sich an.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 20:53:37 +01:00
co-authored by Claude Opus 5.5
parent fc15f2b933
commit 35985fe66d
4 changed files with 59 additions and 5 deletions
+13
View File
@@ -293,6 +293,8 @@ async function ladeZugang() {
const z = await api("/access");
setzeSchalter("s-zugang", z.enabled);
$("einladungslink").value = z.link;
$("link-basis").textContent = z.base;
setzeWert("link-eigen", z.token);
$("qr").src = "/admin/api/access/qr?t=" + Date.now();
}
@@ -426,6 +428,17 @@ function start() {
toast("Neuer Link erzeugt");
ladeZugang();
});
$("link-festlegen").addEventListener("click", async () => {
const token = $("link-eigen").value.trim();
if (!/^[A-Za-z0-9_-]{6,64}$/.test(token)) {
toast("Mindestens 6 Zeichen: nur Buchstaben, Ziffern, - und _", true);
return;
}
if (!confirm(`Link auf „${token}“ ändern? Der alte Link und alle bisherigen Gastzugänge werden ungültig.`)) return;
await api("/access/token", { token });
toast("Eigener Link übernommen");
ladeZugang();
});
$("playlist-wechseln").addEventListener("click", async () => {
await aktion("/playlist", { link: $("playlist-neu").value }, "Playlist gewechselt").catch(() => {});