diff --git a/public/index.php b/public/index.php index a74c723..f56f975 100644 --- a/public/index.php +++ b/public/index.php @@ -70,17 +70,9 @@ function requireLogin(array $config): void } /** - * Hilfsfunktion: Ergebnis-Array eines Controllers nehmen und das Layout rendern. + * Verarbeitet ein View-Result oder Redirect-Result. * - * Erwartetes Format im $result-Array: - * [ - * 'view' => string, // Pfad zur Content-View (z. B. public/views/dashboard.php) - * 'data' => array // Daten für die View - * 'pageTitle' => string, // Seitentitel - * 'activeMenu' => string|null, // Menükennung für Sidebar (z. B. 'dashboard' oder 'users') - * ] - * - * @param array $result + * @param array|null $result */ function handleResult(?array $result): void { @@ -118,44 +110,36 @@ $route = $_GET['route'] ?? 'login'; switch ($route) { case 'login': - // Wenn bereits eingeloggt, direkt zum Dashboard - $sessionKey = $config['security']['session_key_user'] ?? 'admin_user'; - if (isset($_SESSION[$sessionKey]) === true) { - header('Location: index.php?route=dashboard'); - exit; - } - - // Controller liefert View-Definition + Daten + // Login-Formular anzeigen (ggf. mit Fehlermeldung) $result = $authController->showLoginForm(); - renderLayout($result); + handleResult($result); break; case 'login.submit': - // POST-Login wird im Controller verarbeitet. - // Der Controller entscheidet, ob er redirectet oder ein View-Ergebnis zurückgibt. - $result = $authController->processLogin(); - if ($result !== null) { - // z. B. bei Login-Fehler: Login-Seite mit Fehlermeldung anzeigen - renderLayout($result); + if ($_SERVER['REQUEST_METHOD'] !== 'POST') { + // Falscher HTTP-Verb: einfach zurück zum Login + header('Location: index.php?route=login'); + exit; } - // Bei erfolgreichem Login macht der Controller einen Redirect und beendet das Script. + $result = $authController->processLogin(); + handleResult($result); break; case 'logout': - $authController->logout(); - // logout() sollte selbst redirecten (z. B. auf route=login) + $result = $authController->logout(); + handleResult($result); break; case 'dashboard': requireLogin($config); $result = $dashboardController->show(); - renderLayout($result); + handleResult($result); break; case 'users': requireLogin($config); $result = $userManagementController->show(); - renderLayout($result); + handleResult($result); break; default: @@ -164,3 +148,4 @@ switch ($route) { break; } +