= 8; } $adminAccounts = getAdminAccounts(); function isValidAdminEmailInput($email) { return isValidAdminEmail($email); } if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['add_admin'])) { $username = normalizeAdminUsername($_POST['username'] ?? ''); $description = normalizeAdminDescription($_POST['description'] ?? ''); $email = normalizeAdminEmail($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; $passwordConfirm = $_POST['password_confirm'] ?? ''; if (!isValidAdminUsername($username)) { $message = 'Ungültiger Benutzername. Erlaubt: 3-50 Zeichen (Buchstaben, Zahlen, Punkt, Unterstrich, Bindestrich).'; $messageType = 'error'; } elseif (isset($adminAccounts[$username])) { $message = 'Dieser Benutzername existiert bereits.'; $messageType = 'error'; } elseif (!isValidAdminDescription($description)) { $message = 'Beschreibung ist erforderlich (max. 120 Zeichen).'; $messageType = 'error'; } elseif (!isValidAdminEmailInput($email)) { $message = 'Gültige E-Mail ist erforderlich.'; $messageType = 'error'; } elseif (!isValidAdminPasswordInput($password)) { $message = 'Passwort muss mindestens 8 Zeichen lang sein.'; $messageType = 'error'; } elseif ($password !== $passwordConfirm) { $message = 'Passwort und Bestätigung stimmen nicht überein.'; $messageType = 'error'; } else { $adminAccounts[$username] = [ 'password_hash' => password_hash($password, PASSWORD_BCRYPT), 'description' => $description, 'email' => $email ]; saveAdminAccounts($adminAccounts); $message = 'Admin wurde erfolgreich angelegt.'; $messageType = 'success'; } } if (isset($_POST['update_description'])) { $targetUsername = normalizeAdminUsername($_POST['target_username'] ?? ''); $description = normalizeAdminDescription($_POST['description'] ?? ''); $email = normalizeAdminEmail($_POST['email'] ?? ''); if (!isset($adminAccounts[$targetUsername])) { $message = 'Admin nicht gefunden.'; $messageType = 'error'; } elseif (!isValidAdminDescription($description)) { $message = 'Beschreibung ist erforderlich (max. 120 Zeichen).'; $messageType = 'error'; } elseif (!isValidAdminEmailInput($email)) { $message = 'Gültige E-Mail ist erforderlich.'; $messageType = 'error'; } else { $adminAccounts[$targetUsername]['description'] = $description; $adminAccounts[$targetUsername]['email'] = $email; saveAdminAccounts($adminAccounts); $message = 'Beschreibung und E-Mail wurden aktualisiert.'; $messageType = 'success'; } } if (isset($_POST['change_password'])) { $targetUsername = normalizeAdminUsername($_POST['target_username'] ?? ''); $newPassword = $_POST['new_password'] ?? ''; $newPasswordConfirm = $_POST['new_password_confirm'] ?? ''; if (!isset($adminAccounts[$targetUsername])) { $message = 'Admin nicht gefunden.'; $messageType = 'error'; } elseif (!isValidAdminPasswordInput($newPassword)) { $message = 'Passwort muss mindestens 8 Zeichen lang sein.'; $messageType = 'error'; } elseif ($newPassword !== $newPasswordConfirm) { $message = 'Passwort und Bestätigung stimmen nicht überein.'; $messageType = 'error'; } else { $adminAccounts[$targetUsername]['password_hash'] = password_hash($newPassword, PASSWORD_BCRYPT); saveAdminAccounts($adminAccounts); $message = 'Passwort wurde aktualisiert.'; $messageType = 'success'; } } if (isset($_POST['delete_admin'])) { $targetUsername = normalizeAdminUsername($_POST['target_username'] ?? ''); if (!isset($adminAccounts[$targetUsername])) { $message = 'Admin nicht gefunden.'; $messageType = 'error'; } else { unset($adminAccounts[$targetUsername]); saveAdminAccounts($adminAccounts); if (isset($_SESSION['admin_username']) && $_SESSION['admin_username'] === $targetUsername) { $_SESSION['admin_logged_in'] = false; unset($_SESSION['admin_username']); session_destroy(); header('Location: login.php'); exit; } $message = 'Admin wurde gelöscht.'; $messageType = 'success'; } } $adminAccounts = getAdminAccounts(); } $currentAdmin = isset($_SESSION['admin_username']) ? normalizeAdminUsername($_SESSION['admin_username']) : ''; $changeUsername = normalizeAdminUsername($_GET['change'] ?? ''); $selectedChangeUser = null; $editDescriptionUsername = normalizeAdminUsername($_GET['edit_description'] ?? ''); $selectedDescriptionUser = null; if ($changeUsername !== '') { if (!isset($adminAccounts[$changeUsername])) { if ($message === '') { $message = 'Ausgewählter Admin wurde nicht gefunden.'; $messageType = 'error'; } } else { $selectedChangeUser = $changeUsername; } } if ($editDescriptionUsername !== '') { if (!isset($adminAccounts[$editDescriptionUsername])) { if ($message === '') { $message = 'Ausgewählter Admin wurde nicht gefunden.'; $messageType = 'error'; } } else { $selectedDescriptionUser = $editDescriptionUsername; } } ksort($adminAccounts); $bodyClass = 'admin-page'; include __DIR__ . '/../includes/header.php'; ?>
Eingeloggt als:
| Benutzername | Beschreibung | Aktionen | |
|---|---|---|---|
| Du | Profil ändern Passwort ändern |