ADMIN_SYSTEM.md 1.7 KB

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:

{
  "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.