Adminbereich
Konfiguration sichern
Logge dich mit den statischen Zugangsdaten aus der JSON-Config ein.
start(); $configRepository = app_config_repository(); $message = null; $messageType = 'success'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; if ($action === 'login') { $success = $auth->login( trim((string) ($_POST['username'] ?? '')), (string) ($_POST['password'] ?? '') ); if ($success) { app_redirect('/admin/'); } $message = 'Login fehlgeschlagen. Bitte Zugangsdaten pruefen.'; $messageType = 'error'; } if ($action === 'save_config' && $auth->isAuthenticated()) { $config = $configRepository->getConfig(); $newPassword = trim((string) ($_POST['admin_password'] ?? '')); $config['app'] = [ 'name' => trim((string) ($_POST['app_name'] ?? 'Getraenkeautomat Monitor')), 'timezone' => trim((string) ($_POST['timezone'] ?? 'Europe/Berlin')), 'dashboard_refresh_seconds' => max(5, (int) ($_POST['dashboard_refresh_seconds'] ?? 15)), 'default_from_email' => trim((string) ($_POST['default_from_email'] ?? 'monitor@example.local')), ]; $config['api'] = [ 'bearer_token' => trim((string) ($_POST['bearer_token'] ?? 'change-me-token')), ]; $config['admin'] = [ 'username' => trim((string) ($_POST['admin_username'] ?? 'admin')), 'password_hash' => $newPassword !== '' ? password_hash($newPassword, PASSWORD_BCRYPT) : (string) ($config['admin']['password_hash'] ?? ''), ]; $config['alerts'] = [ 'webhooks' => normalizeWebhooks($_POST['webhooks'] ?? []), 'emails' => normalizeEmails($_POST['emails'] ?? []), ]; $config['machines'] = normalizeMachines($_POST['machines'] ?? []); $configRepository->saveConfig($config); $message = 'Konfiguration gespeichert.'; $messageType = 'success'; } } $config = $configRepository->getConfig(); if (!$auth->isAuthenticated()) { renderLogin($message, $messageType); exit; } renderAdmin($config, $message, $messageType); function renderLogin(?string $message, string $messageType): void { ?>
Adminbereich
Logge dich mit den statischen Zugangsdaten aus der JSON-Config ein.
Faecher koennen direkt darunter verwaltet werden.