LDAP Connection URI angepasst

This commit is contained in:
blaerf 2025-12-05 09:23:51 +01:00
parent 50d53b4183
commit 374b6d465e

View File

@ -19,11 +19,12 @@ declare(strict_types=1);
* - Alle neuen Routen sollten über den Switch-Block am Ende ergänzt werden. * - Alle neuen Routen sollten über den Switch-Block am Ende ergänzt werden.
*/ */
// Eine neue Session wird gestartet und die entsprechende Variable ($_SESSION) angelegt
// Eine neue Session wird gestartet und die entsprechende Variable ($_SESSION) angelegt oder eine bestehende wird fortgesetzt. // oder eine bestehende wird fortgesetzt.
session_start(); session_start();
// PHP-Fehler nur ins Log schreiben, nicht direkt im Browser anzeigen // PHP-Fehler vollständig erfassen, aber nicht im Browser anzeigen.
// Technische Details gehen in den LoggingService.
error_reporting(E_ALL); error_reporting(E_ALL);
ini_set('display_errors', '0'); ini_set('display_errors', '0');
@ -35,7 +36,7 @@ ini_set('display_errors', '0');
*/ */
spl_autoload_register( spl_autoload_register(
static function (string $class): void { static function (string $class): void {
$prefix = 'App\\'; $prefix = 'App\\';
$baseDir = __DIR__ . '/../app/'; $baseDir = __DIR__ . '/../app/';
$len = strlen($prefix); $len = strlen($prefix);
@ -44,7 +45,7 @@ spl_autoload_register(
} }
$relativeClass = substr($class, $len); $relativeClass = substr($class, $len);
$file = $baseDir . str_replace('\\', DIRECTORY_SEPARATOR, $relativeClass) . '.php'; $file = $baseDir . str_replace('\\', DIRECTORY_SEPARATOR, $relativeClass) . '.php';
if (file_exists($file) === true) { if (file_exists($file) === true) {
require $file; require $file;
@ -52,11 +53,11 @@ spl_autoload_register(
} }
); );
// Layout-Funktion einbinden (renderLayout)
require __DIR__ . '/views/layout.php'; require __DIR__ . '/views/layout.php';
// Die Konfigurationsdatei liefert ein assoziatives Array mit den Teilbereichen // Die Konfigurationsdatei liefert ein assoziatives Array mit den Teilbereichen
// "ldap", "snmp" und "security" (u. a. Session-Keys, Timeout-Einstellungen, OIDs). // "ldap", "snmp", "security" und "logging" (u. a. Session-Keys, Timeout-Einstellungen, OIDs, Log-Pfade).
$configPath = __DIR__ . '/../config/config.php'; $configPath = __DIR__ . '/../config/config.php';
if (file_exists($configPath) === false) { if (file_exists($configPath) === false) {
// Fail fast: ohne Konfiguration macht die App keinen Sinn // Fail fast: ohne Konfiguration macht die App keinen Sinn
@ -112,7 +113,7 @@ set_error_handler(
); );
set_exception_handler( set_exception_handler(
static function (Throwable $exception) use ($globalLogger): void { static function (\Throwable $exception) use ($globalLogger): void {
$globalLogger->logException( $globalLogger->logException(
'Unbehandelte Exception in der Anwendung.', 'Unbehandelte Exception in der Anwendung.',
$exception, $exception,
@ -158,20 +159,24 @@ function handleResult(?array $result): void
return; return;
} }
// Redirect-Result
if (isset($result['redirect']) === true) { if (isset($result['redirect']) === true) {
header('Location: ' . $result['redirect']); header('Location: ' . (string)$result['redirect']);
exit; exit;
} }
// View-Result
$contentView = (string)($result['view'] ?? ''); $contentView = (string)($result['view'] ?? '');
$viewData = (array)($result['data'] ?? []); $viewData = (array)($result['data'] ?? []);
// Standard: Wir gehen davon aus, dass es KEINE Loginseite ist, // Standard: Wir gehen davon aus, dass es KEINE Loginseite ist,
// außer der Controller sagt explizit etwas anderes. // außer der Controller sagt explizit etwas anderes.
if (!array_key_exists('loginPage', $viewData)) { if (array_key_exists('loginPage', $viewData) === false) {
$viewData['loginPage'] = false; $viewData['loginPage'] = false;
} }
$pageTitle = (string)($result['pageTitle'] ?? '');
$activeMenu = $result['activeMenu'] ?? null; $pageTitle = (string)($result['pageTitle'] ?? '');
$activeMenu = $result['activeMenu'] ?? null;
if ($contentView === '' || file_exists($contentView) === false) { if ($contentView === '' || file_exists($contentView) === false) {
http_response_code(500); http_response_code(500);
@ -180,30 +185,33 @@ function handleResult(?array $result): void
} }
// Hier rufen wir jetzt die Layout-Funktion aus layout.php auf // Hier rufen wir jetzt die Layout-Funktion aus layout.php auf
renderLayout($contentView, $viewData, $pageTitle, is_string($activeMenu) ? $activeMenu : null); renderLayout(
$contentView,
$viewData,
$pageTitle,
is_string($activeMenu) ? $activeMenu : null
);
} }
// Zentrale Controller der Anwendung initialisieren und ihnen die vollständige Konfiguration übergeben. // 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"). // Die Controller holen sich daraus bei Bedarf ihre spezifischen Teilkonfigurationen (z. B. "ldap" oder "snmp").
// Jeder Controller erzeugt intern seinen eigenen LoggingService aus $config['logging'].
$authController = new AuthController($config); $authController = new AuthController($config);
$dashboardController = new DashboardController($config); $dashboardController = new DashboardController($config);
$userManagementController = new UserManagementController($config); $userManagementController = new UserManagementController($config);
// Route aus dem Query-Parameter lesen. Standardroute ist "login", // Route aus dem Query-Parameter lesen. Standardroute ist "login",
// sodass nicht angemeldete Benutzer automatisch auf die Login-Seite geführt werden. // sodass nicht angemeldete Benutzer automatisch auf die Login-Seite geführt werden.
$route = $_GET['route'] ?? 'login'; $route = $_GET['route'] ?? 'login';
// Einfache Router-Logik: Jede Route ruft eine Controller-Methode auf und // Einfache Router-Logik: Jede Route ruft eine Controller-Methode auf und
// übergibt deren View-Result an handleResult(). Neue Seiten werden hier ergänzt. // übergibt deren View-Result an handleResult(). Neue Seiten werden hier ergänzt.
switch ($route) { switch ($route) {
case 'login': case 'login':
// Login-Formular anzeigen (ggf. mit Fehlermeldung) // Login-Formular anzeigen (ggf. mit Fehlermeldung)
$result = $authController->showLoginForm(); $result = $authController->showLoginForm();
handleResult($result); handleResult($result);
break; break;
case 'login.submit': case 'login.submit':
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
@ -237,5 +245,3 @@ switch ($route) {
echo 'Route nicht gefunden.'; echo 'Route nicht gefunden.';
break; break;
} }