diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index 49775ba..c5fe63a 100644 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -62,6 +62,7 @@ class DashboardController 'data' => [ // Die View erwartet aktuell $serverStatus. 'serverStatus' => $serverStatus, + 'loginPage' => false, ], 'pageTitle' => 'Dashboard', // In der Sidebar soll der Dashboard-Menüpunkt aktiv sein. diff --git a/app/Controllers/UserManagementController.php b/app/Controllers/UserManagementController.php index 67d4e4f..02d197a 100644 --- a/app/Controllers/UserManagementController.php +++ b/app/Controllers/UserManagementController.php @@ -78,6 +78,7 @@ class UserManagementController 'users' => $users, 'groups' => $groups, 'error' => $error, + 'loginPage' => false, ], 'pageTitle' => 'Benutzer & Gruppen', 'activeMenu' => 'users', diff --git a/public/index.php b/public/index.php index 9bb3d20..d7a3fc1 100644 --- a/public/index.php +++ b/public/index.php @@ -3,6 +3,23 @@ // Strenge Typprüfung für Parameter- und Rückgabetypen aktivieren. declare(strict_types=1); +/** + * Front-Controller der Webanwendung. + * + * Aufgaben: + * - Startet die Session und initialisiert den Autoloader für den App-Namespace. + * - Lädt die zentrale Konfiguration aus config/config.php. + * - Instanziiert die Hauptcontroller (Auth, Dashboard, User-Management). + * - Steuert das Routing anhand des GET-Parameters "route". + * - Leitet View-Result-Arrays an das zentrale Layout (renderLayout) weiter + * oder führt Redirects aus. + * + * WICHTIG: + * - Diese Datei ist der einzige öffentliche Einstiegspunkt (Entry Point) der App. + * - Alle neuen Routen sollten über den Switch-Block am Ende ergänzt werden. + */ + + // Eine neue Session wird gestartet und die entsprechende Variable ($_SESSION) angelegt oder eine bestehende wird fortgesetzt. session_start(); @@ -33,7 +50,9 @@ spl_autoload_register( require __DIR__ . '/views/layout.php'; -// Pfad zur Konfigurationsdatei prüfen und Konfiguration laden +// Die Konfigurationsdatei liefert ein assoziatives Array mit den Teilbereichen +// "ldap", "snmp" und "security" (u. a. Session-Keys, Timeout-Einstellungen, OIDs). + $configPath = __DIR__ . '/../config/config.php'; if (file_exists($configPath) === false) { // Fail fast: ohne Konfiguration macht die App keinen Sinn @@ -87,6 +106,11 @@ function handleResult(?array $result): void $contentView = (string)($result['view'] ?? ''); $viewData = (array)($result['data'] ?? []); + // Standard: Wir gehen davon aus, dass es KEINE Loginseite ist, + // außer der Controller sagt explizit etwas anderes. + if (!array_key_exists('loginPage', $viewData)) { + $viewData['loginPage'] = false; + } $pageTitle = (string)($result['pageTitle'] ?? ''); $activeMenu = $result['activeMenu'] ?? null; @@ -100,14 +124,21 @@ function handleResult(?array $result): void renderLayout($contentView, $viewData, $pageTitle, is_string($activeMenu) ? $activeMenu : null); } -// Controller instanziieren +// Zentrale Controller der Anwendung initialisieren und ihnen die vollständige Konfiguration übergeben. +// Die Controller holen sich daraus bei Bedarf ihre spezifischen Teilkonfigurationen (z. B. "ldap" oder "snmp"). + $authController = new AuthController($config); $dashboardController = new DashboardController($config); $userManagementController = new UserManagementController($config); -// Route bestimmen +// Route aus dem Query-Parameter lesen. Standardroute ist "login", +// sodass nicht angemeldete Benutzer automatisch auf die Login-Seite geführt werden. + $route = $_GET['route'] ?? 'login'; +// Einfache Router-Logik: Jede Route ruft eine Controller-Methode auf und +// übergibt deren View-Result an handleResult(). Neue Seiten werden hier ergänzt. + switch ($route) { case 'login': // Login-Formular anzeigen (ggf. mit Fehlermeldung) diff --git a/public/views/dashboard.php b/public/views/dashboard.php index 0fe1dad..ea5180d 100644 --- a/public/views/dashboard.php +++ b/public/views/dashboard.php @@ -2,6 +2,18 @@ declare(strict_types=1); +/** + * View-Template für das Server-Dashboard. + * + * Aufgaben: + * - Visualisiert den vom SnmpServerStatusService gelieferten Serverstatus. + * - Zeigt Kennzahlen wie Hostname, Uptime, CPU-Auslastung, RAM-Auslastung + * und Belegung der Systempartition "C:" an. + * + * Erwartete View-Daten: + * - array $serverStatus Assoziatives Array mit Statuswerten (hostname, uptime, cpu_usage, memory_usage, disk_usage_c, last_update). + */ + /** @var array $serverStatus */ ?> @@ -96,5 +108,4 @@ declare(strict_types=1); - - + diff --git a/public/views/layout.php b/public/views/layout.php index 03524f1..d122a32 100644 --- a/public/views/layout.php +++ b/public/views/layout.php @@ -26,7 +26,10 @@ function renderLayout(string $contentView, array $viewData, string $pageTitle, ? } } + // Basispfad für alle Layout-Teilansichten (Head, Sidebar, Topbar, Footer, Scripts). + $partialsPath = __DIR__ . '/partials'; + $isLoginPage = !empty($viewData['loginPage']); ?> @@ -38,7 +41,9 @@ function renderLayout(string $contentView, array $viewData, string $pageTitle, ?
- +
@@ -46,7 +51,9 @@ function renderLayout(string $contentView, array $viewData, string $pageTitle, ?
- +
diff --git a/public/views/login.php b/public/views/login.php index a3830d6..2eaa1a9 100644 --- a/public/views/login.php +++ b/public/views/login.php @@ -1,7 +1,20 @@ diff --git a/public/views/partials/footer.php b/public/views/partials/footer.php index 5de355c..f425be2 100644 --- a/public/views/partials/footer.php +++ b/public/views/partials/footer.php @@ -1,5 +1,16 @@ diff --git a/public/views/partials/head.php b/public/views/partials/head.php index 96e0060..74520a7 100644 --- a/public/views/partials/head.php +++ b/public/views/partials/head.php @@ -1,5 +1,16 @@ -Bereich und den Beginn des HTML-Body. + * + * Aufgaben: + * - Setzt Zeichensatz und Dokumenttitel (inkl. optionalem Seitentitel). + * - Bindet die CSS-Ressourcen des SB-Admin-2-Templates sowie DataTables ein. + * - Öffnet das -Element und den Wrapper für das Layout. + * + * WICHTIG: + * - Diese Datei wird ausschließlich über das zentrale Layout (layout.php) eingebunden. + */ + ?> diff --git a/public/views/partials/scripts.php b/public/views/partials/scripts.php index 6deaec0..b13f8c9 100644 --- a/public/views/partials/scripts.php +++ b/public/views/partials/scripts.php @@ -1,5 +1,19 @@ diff --git a/public/views/partials/sidebar.php b/public/views/partials/sidebar.php index dc23d9b..ea97dd7 100644 --- a/public/views/partials/sidebar.php +++ b/public/views/partials/sidebar.php @@ -1,5 +1,17 @@