feature/UI-Update #12

Merged
blaerf merged 4 commits from feature/UI-Update into develop 2025-11-29 06:32:51 +00:00
10 changed files with 135 additions and 9 deletions
Showing only changes of commit 6523fe1131 - Show all commits

View File

@ -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)

View File

@ -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<string, mixed> $serverStatus Assoziatives Array mit Statuswerten (hostname, uptime, cpu_usage, memory_usage, disk_usage_c, last_update).
*/
/** @var array<string, mixed> $serverStatus */
?>

View File

@ -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']);
?>

View File

@ -1,7 +1,20 @@
<?php
declare(strict_types=1);
const LOGIN_PAGE = true;
/**
* View-Template für die Login-Seite des AD Admin Tools.
*
* Aufgaben:
* - Stellt das Anmeldeformular für Administratoren dar.
* - Zeigt bei Bedarf eine Fehlermeldung aus der Authentifizierung an.
* - Kennzeichnet sich selbst über die Konstante LOGIN_PAGE, damit das Layout
* Sidebar und Topbar ausblenden kann.
*
* Erwartete View-Daten:
* - string|null $error Fehlermeldung aus dem AuthController (oder null bei Erfolg).
*/
/** @var string|null $error */
?>

View File

@ -1,5 +1,16 @@
<?php
// public/views/partials/footer.php
/**
* Partielle View für den Footer-Bereich und das Schließen der Layout-Container.
*
* Aufgaben:
* - Schließt die Container für den Hauptinhalt und den Content-Wrapper.
* - Rendert den Sticky-Footer mit einfachem Copyright-Hinweis.
* - Schließt die äußeren Wrapper-Elemente des SB-Admin-2-Layouts.
*
* Hinweis:
* - Die JavaScript-Ressourcen werden separat in scripts.php eingebunden.
*/
?>

View File

@ -1,5 +1,16 @@
<?php
// public/views/partials/head.php
/**
* Partielle View für den <head>-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 <body>-Element und den Wrapper für das Layout.
*
* WICHTIG:
* - Diese Datei wird ausschließlich über das zentrale Layout (layout.php) eingebunden.
*/
?>

View File

@ -1,5 +1,19 @@
<?php
// public/views/partials/scripts.php
/**
* Partielle View für alle JavaScript-Assets.
*
* Aufgaben:
* - Stellt den "Scroll to Top"-Button bereit.
* - Bindet die JavaScript-Abhängigkeiten des SB-Admin-2-Templates ein
* (jQuery, Bootstrap, jQuery-Easing).
* - Lädt optionale Plugins wie Chart.js und DataTables.
* - Lädt die Demo-Skripte für Charts und Tabellen (js/demo/...).
*
* Hinweis:
* - Diese Datei sollte am Ende des Body-Bereichs über das Layout eingebunden werden,
* damit die Seite schnell gerendert wird.
*/
?>
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">

View File

@ -1,5 +1,17 @@
<?php
// public/views/partials/sidebar.php
/**
* Partielle View für die linke Sidebar-Navigation.
*
* Aufgaben:
* - Zeigt das Branding (Logo + Titel "AD Admin Tool") im oberen Bereich.
* - Enthält die Navigationspunkte "Dashboard" und "Benutzer & Gruppen".
* - Markiert den aktuell aktiven Menüpunkt anhand der Variable $activeMenu.
* - Stellt den Sidebar-Toggler für schmalere Viewports bereit.
*
* Erwartete View-Daten:
* - string|null $activeMenu Kennzeichnung für den aktuell aktiven Eintrag (z. B. 'dashboard' oder 'users').
*/
?>
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">

View File

@ -1,5 +1,16 @@
<?php
// public/views/partials/topbar.php
/**
* Partielle View für die obere Navigationsleiste (Topbar).
*
* Aufgaben:
* - Stellt den Button zum Ein- und Ausklappen der Sidebar auf mobilen Geräten bereit.
* - Zeigt im rechten Bereich die Benutzerinformationen an (Anzeigename + Profilbild).
* - Bietet im Benutzer-Dropdown einen Logout-Link an, der die Route "logout" aufruft.
*
* Erwartete View-Daten:
* - string|null $currentUsername Anzeigename des aktuell angemeldeten Benutzers (optional).
*/
?>

View File

@ -2,6 +2,20 @@
declare(strict_types=1);
/**
* View-Template für die Anzeige von Benutzern und Gruppen.
*
* Aufgaben:
* - Stellt zwei Tabellen dar: eine Benutzerliste und eine Gruppenliste.
* - Nutzt Daten aus dem LdapDirectoryService (über den UserManagementController).
* - Behandelt optionale Fehlermeldungen durch Ausgabe eines Alert-Elements.
*
* Erwartete View-Daten:
* - array<int, array<string, string>> $users Liste von Benutzerobjekten (z. B. sAMAccountName, displayName, mail).
* - array<int, array<string, string>> $groups Liste von Gruppenobjekten (z. B. sAMAccountName, cn, description).
* - string|null $error Fehlermeldung bei Problemen mit dem LDAP-Zugriff.
*/
/**
* @var array<int, array<string, string>> $users
* @var array<int, array<string, string>> $groups