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:
* [
* '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
* @param array<string, mixed>|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;
}