= 8; } $adminAccounts = getAdminAccounts(); function isValidAdminEmailInput($email) { return isValidAdminEmail($email); } if ($_SERVER["REQUEST_METHOD"] === "POST") { // Validate CSRF token if (!validateCsrfToken($_POST["csrf_token"] ?? "")) { $message = "Ungültiges Token. Bitte versuchen Sie es erneut."; $messageType = "error"; } else { 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); logAccess("Admin added admin account", [ "username" => $username, "description" => $description, ]); $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); logAccess("Admin updated admin description", [ "username" => $targetUsername, ]); $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); logAccess("Admin changed admin password", [ "username" => $targetUsername, ]); $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); logAccess("Admin deleted admin account", [ "username" => $targetUsername, ]); 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 |