From 83e20cd365843361ffbc6c429f6df97de13406e9 Mon Sep 17 00:00:00 2001 From: blaerf Date: Sat, 29 Nov 2025 06:23:45 +0100 Subject: [PATCH 1/4] sidebar, topbar ausblenden wenn nicht angemeldet --- app/Controllers/DashboardController.php | 1 + app/Controllers/UserManagementController.php | 1 + public/index.php | 5 +++++ public/views/layout.php | 9 +++++++-- 4 files changed, 14 insertions(+), 2 deletions(-) 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..ffd0ab6 100644 --- a/public/index.php +++ b/public/index.php @@ -87,6 +87,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; diff --git a/public/views/layout.php b/public/views/layout.php index 03524f1..0365213 100644 --- a/public/views/layout.php +++ b/public/views/layout.php @@ -27,6 +27,7 @@ function renderLayout(string $contentView, array $viewData, string $pageTitle, ? } $partialsPath = __DIR__ . '/partials'; + $isLoginPage = !empty($viewData['loginPage']); ?> @@ -38,7 +39,9 @@ function renderLayout(string $contentView, array $viewData, string $pageTitle, ?
- +
@@ -46,7 +49,9 @@ function renderLayout(string $contentView, array $viewData, string $pageTitle, ?
- +
-- 2.45.2 From b62d455d77653518e9d469c9ae8d8f6b0fd0fdfa Mon Sep 17 00:00:00 2001 From: blaerf Date: Sat, 29 Nov 2025 06:33:21 +0100 Subject: [PATCH 2/4] =?UTF-8?q?Kommentar=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/views/dashboard.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/public/views/dashboard.php b/public/views/dashboard.php index 0fe1dad..1f8ab86 100644 --- a/public/views/dashboard.php +++ b/public/views/dashboard.php @@ -96,5 +96,4 @@ declare(strict_types=1);
- - + -- 2.45.2 From 2efe1bb6d3d004dca28cf24161586dd8d9bbb98a Mon Sep 17 00:00:00 2001 From: blaerf Date: Sat, 29 Nov 2025 06:41:28 +0100 Subject: [PATCH 3/4] =?UTF-8?q?Checkbox=20f=C3=BCr=20Benutzerauswahl=20hin?= =?UTF-8?q?zugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/views/users.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/views/users.php b/public/views/users.php index 0ef3b5f..bf8c969 100644 --- a/public/views/users.php +++ b/public/views/users.php @@ -33,6 +33,7 @@ declare(strict_types=1); + @@ -41,6 +42,9 @@ declare(strict_types=1); + -- 2.45.2 From 6523fe1131e974c147e2d85d17b93502f9e3b26b Mon Sep 17 00:00:00 2001 From: blaerf Date: Sat, 29 Nov 2025 07:16:36 +0100 Subject: [PATCH 4/4] =?UTF-8?q?Kommentare=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.php | 32 ++++++++++++++++++++++++++++--- public/views/dashboard.php | 12 ++++++++++++ public/views/layout.php | 2 ++ public/views/login.php | 15 ++++++++++++++- public/views/partials/footer.php | 13 ++++++++++++- public/views/partials/head.php | 13 ++++++++++++- public/views/partials/scripts.php | 16 +++++++++++++++- public/views/partials/sidebar.php | 14 +++++++++++++- public/views/partials/topbar.php | 13 ++++++++++++- public/views/users.php | 14 ++++++++++++++ 10 files changed, 135 insertions(+), 9 deletions(-) diff --git a/public/index.php b/public/index.php index ffd0ab6..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 @@ -105,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 1f8ab86..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 */ ?> diff --git a/public/views/layout.php b/public/views/layout.php index 0365213..d122a32 100644 --- a/public/views/layout.php +++ b/public/views/layout.php @@ -26,6 +26,8 @@ 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']); ?> 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 @@
Anmeldename (sAMAccountName) Anzeigename E-Mail
+ +