Layout modularisiert
This commit is contained in:
parent
905ce67742
commit
f68db3ab1e
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user