Reviewed-on: https://git.eckertplayground.de/taarly/PHP_AdminTool_Projekt/pulls/15
88 lines
3.0 KiB
PHP
88 lines
3.0 KiB
PHP
<?php
|
|
|
|
// Strenge Typprüfung für Parameter- und Rückgabetypen aktivieren.
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Services\Ldap\LdapDirectoryService;
|
|
|
|
/**
|
|
* Controller für die Benutzer- und Gruppenanzeige.
|
|
*
|
|
* Aufgaben:
|
|
* - holt über den LdapDirectoryService die Listen von Benutzern und Gruppen
|
|
* - behandelt technische Fehler und bereitet eine Fehlermeldung für die View auf
|
|
* - gibt die Daten an eine View-Datei (public/views/users.php) weiter
|
|
*
|
|
* WICHTIG:
|
|
* - Es werden aktuell nur Daten angezeigt (Read-only).
|
|
* - Es findet keine Änderung im Active Directory statt.
|
|
*
|
|
* NEU:
|
|
* - Gibt ein View-Result-Array zurück, das von index.php + Layout gerendert wird.
|
|
*/
|
|
class UserManagementController
|
|
{
|
|
/** @var array<string, mixed> Vollständige Anwendungskonfiguration (aus config.php) */
|
|
private array $config;
|
|
|
|
/** @var LdapDirectoryService Service für das Lesen von Benutzern und Gruppen aus dem LDAP/AD */
|
|
private LdapDirectoryService $directoryService;
|
|
|
|
/**
|
|
* @param array<string, mixed> $config Vollständige Konfiguration aus config.php
|
|
*/
|
|
public function __construct(array $config)
|
|
{
|
|
// Komplette Konfiguration speichern (falls später weitere Werte benötigt werden).
|
|
$this->config = $config;
|
|
|
|
// LDAP-Konfiguration aus der Gesamt-Konfiguration herausziehen.
|
|
$ldapConfig = $config['ldap'] ?? [];
|
|
|
|
// Directory-Service initialisieren, der die eigentliche LDAP-Arbeit übernimmt.
|
|
$this->directoryService = new LdapDirectoryService($ldapConfig);
|
|
}
|
|
|
|
/**
|
|
* Zeigt Benutzer- und Gruppenliste an.
|
|
* Wird typischerweise über die Route "users" (index.php?route=users) aufgerufen.
|
|
*
|
|
* @return array<string, mixed> View-Result für das zentrale Layout
|
|
*/
|
|
public function show(): array
|
|
{
|
|
// Standardwerte für die View-Variablen vorbereiten.
|
|
$error = null;
|
|
$users = [];
|
|
$groups = [];
|
|
|
|
try {
|
|
// Benutzer- und Gruppenlisten aus dem AD laden.
|
|
$users = $this->directoryService->getUsers();
|
|
$groups = $this->directoryService->getGroups();
|
|
} catch (\Throwable $exception) {
|
|
// Sämtliche technischen Fehler (z. B. Verbindungs- oder Konfigurationsprobleme)
|
|
// werden hier in eine für den Benutzer lesbare Fehlermeldung übersetzt.
|
|
$error = 'Fehler beim Laden von Benutzern/Gruppen: ' . $exception->getMessage();
|
|
}
|
|
|
|
// Pfad zur eigentlichen View-Datei bestimmen.
|
|
$viewPath = __DIR__ . '/../../public/views/users.php';
|
|
|
|
return [
|
|
'view' => $viewPath,
|
|
'data' => [
|
|
// Die View erwartet aktuell $users, $groups, $error.
|
|
'users' => $users,
|
|
'groups' => $groups,
|
|
'error' => $error,
|
|
'loginPage' => false,
|
|
],
|
|
'pageTitle' => 'Benutzer & Gruppen',
|
|
'activeMenu' => 'users',
|
|
];
|
|
}
|
|
}
|