This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Admin-Bereich Dokumentation
Übersicht
Der Admin-Bereich ermöglicht die Verwaltung der Zwergen-Börse. Nur autorisierte Benutzer haben Zugriff.
Zugriff
URL: /backend/web/admin_login.php
Hinweis: Ein “Standardpasswort” wird nicht mehr im Wiki dokumentiert.
Das Admin-Passwort liegt als Hash in der DB-Config (adminPasswordHash).
- Empfehlung: Passwort direkt nach dem ersten Zugriff setzen/ändern (siehe „Passwort ändern“ unten).
- Reset-Fall: Falls du keinen Zugriff mehr hast, nutze die Passwort-Reset-Funktion im Login (sendet ein neues Passwort an die konfigurierten
operatorEmail).
Funktionen
1. Konfiguration
URL: /backend/web/admin.php
Einstellungen:
- Datum der Zwergenbörse: Event-Datum
- Startdatum Anmeldung: Beginn des Anmeldezeitraums
- Enddatum Anmeldung: Ende des Anmeldezeitraums
- Startnummer: Erste vergebene Nummer
- Maximale Nummer: Anzahl verfügbarer Anmeldungen
- E-Mail des Organisators: Empfänger für Benachrichtigungen
Speichern: Änderungen werden sofort in der Datenbank gespeichert
1.1 Mail-Queue (Tab „Mail-Queue“ in admin.php)
Der Admin-Bereich hat einen eigenen Tab für den asynchronen Mailversand:
- Mail-Queue aktiv (
mailQueueEnabled)- Wenn aktiv, werden Mails nach der Registrierung in die Queue geschrieben und per Cron versendet.
- Max. Mails pro Stunde (
mailMaxPerHour, 1–60)- Steuert das Rate-Limit im Cron-Worker (Token-Bucket).
- Testmodus: Umleitung an @schumbi.de (
mailRedirectToSchumbi)- Leitet User-Mails (nicht Orga) auf
@schumbi.deum, aber nur außerhalb der echten Anmeldephase (serverseitig erzwungen).
- Leitet User-Mails (nicht Orga) auf
Statusanzeige:
- pending/sending/failed werden live (Polling) angezeigt
- Button „Failed Jobs erneut versuchen“ setzt failed → pending
Mehr Details (inkl. „Bucket“-Erklärung): Mail-Queue
2. CSV-Export
Funktion: Alle Anmeldungen als CSV-Datei herunterladen
Verwendung:
- Auf "CSV herunterladen" klicken
- Datei wird generiert und zum Download angeboten
Format:
- CSV mit UTF-8 Encoding
- Spalten: Alle Anmeldefelder
- Trennzeichen: Komma
3. Passwort ändern
URL: /backend/web/admin_password.php
Schritte:
- Altes Passwort eingeben
- Neues Passwort eingeben (2x zur Bestätigung)
- Speichern
Anforderungen:
- Passwort wird gehasht (Bcrypt)
- Starke Passwörter empfohlen
4. Anmeldungen löschen
URL: /backend/web/clear_registrations.php
Bedingungen:
- Nur außerhalb des Anmeldezeitraums möglich
- Unwiderruflich!
Verwendung:
- Prüfen, ob außerhalb Anmeldezeitraum
- Auf "Alle Anmeldungen löschen" klicken
- Bestätigen
⚠️ Warnung: Diese Aktion kann nicht rückgängig gemacht werden!
5. Logout
Funktion: Session beenden und ausloggen
Verwendung: Auf "Logout" klicken
Sicherheit
Zugriffsschutz
- Nur für eingeloggte Admins
- Automatische Weiterleitung bei fehlendem Login
CSRF-Schutz
- Alle Formulare verwenden CSRF-Token
- Token wird bei jedem Request geprüft
Rate-Limiting
- Max. 5 Fehlversuche
- Block: 10 Minuten
- Automatisches Zurücksetzen bei erfolgreichem Login
Workflow
Vor einer Veranstaltung
-
Konfiguration setzen:
- Event-Datum
- Anmeldezeitraum
- Nummernbereich
- Organisator-E-Mail
-
Passwort ändern (falls nötig)
-
Test-Anmeldung durchführen
Während Anmeldezeitraum
-
Anmeldungen überwachen:
- Counter prüfen (
/backend/web/counter.php) - CSV-Export für Übersicht
- Mail-Queue Status prüfen (Tab „Mail-Queue“ in
admin.php)
- Counter prüfen (
-
Konfiguration anpassen (falls nötig)
Nach Anmeldezeitraum
- Anmeldungen exportieren (CSV)
- Backup erstellen
- Anmeldungen löschen (optional, für nächste Veranstaltung)
Troubleshooting
Login funktioniert nicht
Mögliche Ursachen:
- Falsches Passwort
- Rate-Limiting aktiv (zu viele Fehlversuche)
- Session-Probleme
Lösung:
- Passwort prüfen
- 10 Minuten warten (bei Rate-Limit)
- Browser-Cache leeren
- Session-Dateien prüfen
Konfiguration wird nicht gespeichert
Mögliche Ursachen:
- CSRF-Token ungültig
- Datenbank nicht beschreibbar
- Validierungsfehler
Lösung:
- Seite neu laden
- Datenbank-Berechtigungen prüfen
- Fehlermeldungen prüfen
CSV-Export funktioniert nicht
Mögliche Ursachen:
- Keine Anmeldungen vorhanden
- PHP-Fehler
- Speicher-Probleme
Lösung:
- PHP-Error-Log prüfen
- PHP-Memory-Limit prüfen
- Manuell testen
Best Practices
Passwort-Management
- Starkes Passwort verwenden
- Regelmäßig ändern
- Nicht weitergeben
Konfiguration
- Vor Veranstaltung prüfen
- Test-Anmeldung durchführen
- Backup vor Änderungen
Daten-Management
- Regelmäßig exportieren
- Backups erstellen
- Nur außerhalb Zeitraum löschen
API-Endpunkte
Counter
URL: /backend/web/counter.php
Methode: GET
Response: JSON
{
"count": 42
}
Verwendung: Für externe Anzeige der Anmeldeanzahl
Logging
Admin-Aktionen werden protokolliert:
- Datei:
public/data/admin_actions.log - Format: Timestamp | Admin | Aktion | IP
Beispiel:
2025-01-15T10:30:00+01:00 | Admin true | hat die Konfiguration geändert. IP: 192.168.1.1
Erweiterungen
Neue Admin-Funktion hinzufügen
-
Controller erstellen:
// zgb-backend/web/new_function.php -
Zugriffsschutz:
session_start(); if (empty($_SESSION['is_admin'])) { header('Location: admin_login.php'); exit; } -
CSRF-Schutz:
CSRFService::checkToken($_POST['csrf_token'] ?? null); -
Link in admin.php hinzufügen
Einstieg
Architektur
- Architektur-Übersicht
- Frontend-Build
- Backend
- Datenbank
- Mail-Queue
- Performance & Optimierungen
- Entscheidungen & Historie
Betrieb
Projektarbeit
- Code:
ssh://forgejo@home.schumbi.de/ralf/zgb_www.git - Wiki:
ssh://forgejo@home.schumbi.de/ralf/zgb_www.wiki.git