Layout modularisiert

This commit is contained in:
blaerf 2025-11-28 15:34:38 +01:00
parent 905ce67742
commit f68db3ab1e

View File

@ -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: * @param array<string, mixed>|null $result
* [
* 'view' => string, // Pfad zur Content-View (z. B. public/views/dashboard.php)
* 'data' => array<string, mixed> // Daten für die View
* 'pageTitle' => string, // Seitentitel
* 'activeMenu' => string|null, // Menükennung für Sidebar (z. B. 'dashboard' oder 'users')
* ]
*
* @param array<string, mixed> $result
*/ */
function handleResult(?array $result): void function handleResult(?array $result): void
{ {
@ -118,44 +110,36 @@ $route = $_GET['route'] ?? 'login';
switch ($route) { switch ($route) {
case 'login': case 'login':
// Wenn bereits eingeloggt, direkt zum Dashboard // Login-Formular anzeigen (ggf. mit Fehlermeldung)
$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
$result = $authController->showLoginForm(); $result = $authController->showLoginForm();
renderLayout($result); handleResult($result);
break; break;
case 'login.submit': case 'login.submit':
// POST-Login wird im Controller verarbeitet. if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
// Der Controller entscheidet, ob er redirectet oder ein View-Ergebnis zurückgibt. // Falscher HTTP-Verb: einfach zurück zum Login
$result = $authController->processLogin(); header('Location: index.php?route=login');
if ($result !== null) { exit;
// z. B. bei Login-Fehler: Login-Seite mit Fehlermeldung anzeigen
renderLayout($result);
} }
// Bei erfolgreichem Login macht der Controller einen Redirect und beendet das Script. $result = $authController->processLogin();
handleResult($result);
break; break;
case 'logout': case 'logout':
$authController->logout(); $result = $authController->logout();
// logout() sollte selbst redirecten (z. B. auf route=login) handleResult($result);
break; break;
case 'dashboard': case 'dashboard':
requireLogin($config); requireLogin($config);
$result = $dashboardController->show(); $result = $dashboardController->show();
renderLayout($result); handleResult($result);
break; break;
case 'users': case 'users':
requireLogin($config); requireLogin($config);
$result = $userManagementController->show(); $result = $userManagementController->show();
renderLayout($result); handleResult($result);
break; break;
default: default:
@ -164,3 +148,4 @@ switch ($route) {
break; break;
} }