# Admin System ## Überblick Das Admin-System nutzt einen klassischen Session-Login für den Bereich unter `admin/`. - Login-Seite: `admin/login.php` - Admin-Dashboard: `admin/index.php` - Admin-Verwaltung: `admin/admins.php` - Backend-Helfer: `includes/functions.php` - Persistenz: `data/admins.json` ## Datenmodell (`data/admins.json`) Format: ```json { "admins": { "username": { "password_hash": "$2y$...", "description": "Rolle/Beschreibung", "email": "admin@example.org" } } } ``` Hinweise: - `password_hash` muss ein gültiger Hash für `password_verify()` sein. - `description` ist Pflicht (max. 120 Zeichen). - `email` ist Pflicht und wird für neue Bestell-Benachrichtigungen verwendet. - Ältere Einträge im Legacy-Format (`"username": "$2y$..."`) werden weiterhin gelesen. - Es gibt **keine automatische Migration** mehr beim Lesen. ## Rechte - Jeder eingeloggte Admin darf: - neue Admins anlegen, - Passwörter anderer Admins ändern, - andere Admins löschen, - Beschreibungen bearbeiten. Diese Regeln werden serverseitig geprüft. ## Bedienung in `admin/admins.php` - Tabelle zeigt Benutzername + Beschreibung + E-Mail. - Bearbeitung von Beschreibung + E-Mail erfolgt über den Button `Profil ändern` und ein separates Formular. - Passwortänderung erfolgt über den Button `Passwort ändern` und ein separates Formular. ## Wichtige Betriebsdetails - Session-Status: - Login setzt `$_SESSION['admin_logged_in'] = true` - Login setzt zusätzlich `$_SESSION['admin_username']` - Logout löscht beide Werte und beendet die Session. - Das System schreibt `admins.json` nur bei expliziten Admin-Aktionen (anlegen, ändern, löschen), nicht während reiner Lesevorgänge.