Admin-Modus: Verwaltung aller Matches unter /admin

Anmeldung mit ADMIN_PASSWORD (12 h, Sitzung nur im Speicher, Sperre nach
5 Fehlversuchen pro Minute). Alle Matches mit Codes, Servern, Spielern,
Veto und Verlauf. Aktionen: Veto starten bzw. Schritte für beide Teams,
Warmup beenden, nächste Map, Server stoppen/neu starten, abschließen,
abbrechen, Spieler entfernen, Codes erneuern, Match löschen.
Ohne ADMIN_PASSWORD ist der Admin-Modus komplett aus.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
SPP UserandClaude Haiku 5.5 committed 2026-10-25 23:16:44 +01:00
1 parent 726974fe82
commit 330048acfc
8 files changed
+446

No files matched your search

+23
View File
@@ -483,3 +483,26 @@ input:focus, select:focus { border-color: var(--link); outline: none; }
@media (max-width: 640px) {
.series-score { grid-column: 2; grid-row: 2; font-size: 1.75rem; }
}
/* ---------- Admin ---------- */
.admin-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; }
.admin-list { display: grid; gap: 14px; }
.admin-card { border-left: 4px solid var(--line-strong); }
.admin-card.status-live { border-left-color: var(--brand-red); }
.admin-card.status-veto { border-left-color: var(--pending); }
.admin-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.admin-card-head strong { font: 700 1.5rem var(--display); }
.admin-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; align-items: center; }
.admin-details { margin-top: 16px; border-top: 1px solid var(--line); padding-top: 14px; display: grid; gap: 10px; }
.admin-details h3 { margin-top: 6px; }
.admin-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
.admin-players { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.admin-players ul { list-style: none; padding: 0; margin: 4px 0 0; }
.admin-players li { display: flex; gap: 10px; align-items: baseline; padding: 4px 0; border-bottom: 1px solid var(--line); }
.admin-players em { font-style: normal; color: var(--pending); font-size: .8125rem; }
.admin-log { list-style: none; padding: 0; margin: 0; max-height: 260px; overflow-y: auto; font-size: .875rem; }
.admin-log li { padding: 4px 0; border-bottom: 1px solid var(--line); }
.admin-log time { color: var(--muted); margin-right: 8px; }
.admin-login { margin-top: 40px; }
.danger { color: var(--error); }
@media (max-width: 640px) { .admin-players { grid-template-columns: 1fr; } }