LDAP Connection URI angepasst #21
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user