5 Admin
Ralf Warmuth edited this page 2026-01-09 22:36:30 +01:00
This file contains ambiguous Unicode characters

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, 160)
    • Steuert das Rate-Limit im Cron-Worker (Token-Bucket).
  • Testmodus: Umleitung an @schumbi.de (mailRedirectToSchumbi)
    • Leitet User-Mails (nicht Orga) auf @schumbi.de um, aber nur außerhalb der echten Anmeldephase (serverseitig erzwungen).

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:

  1. Auf "CSV herunterladen" klicken
  2. 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:

  1. Altes Passwort eingeben
  2. Neues Passwort eingeben (2x zur Bestätigung)
  3. 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:

  1. Prüfen, ob außerhalb Anmeldezeitraum
  2. Auf "Alle Anmeldungen löschen" klicken
  3. 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

  1. Konfiguration setzen:

    • Event-Datum
    • Anmeldezeitraum
    • Nummernbereich
    • Organisator-E-Mail
  2. Passwort ändern (falls nötig)

  3. Test-Anmeldung durchführen

Während Anmeldezeitraum

  1. 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)
  2. Konfiguration anpassen (falls nötig)

Nach Anmeldezeitraum

  1. Anmeldungen exportieren (CSV)
  2. Backup erstellen
  3. 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

  1. Starkes Passwort verwenden
  2. Regelmäßig ändern
  3. Nicht weitergeben

Konfiguration

  1. Vor Veranstaltung prüfen
  2. Test-Anmeldung durchführen
  3. Backup vor Änderungen

Daten-Management

  1. Regelmäßig exportieren
  2. Backups erstellen
  3. 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

  1. Controller erstellen:

    // zgb-backend/web/new_function.php
    
  2. Zugriffsschutz:

    session_start();
    if (empty($_SESSION['is_admin'])) {
        header('Location: admin_login.php');
        exit;
    }
    
  3. CSRF-Schutz:

    CSRFService::checkToken($_POST['csrf_token'] ?? null);
    
  4. Link in admin.php hinzufügen