canManage()) {
http_response_code(403);
echo 'Kein Zugriff auf LDAP-Test.';
exit;
}
$ldap = new LdapProvisioner($config);
$csrfToken = (string) ($_SESSION['ldap_test_token'] ?? '');
if ($csrfToken === '') {
$csrfToken = bin2hex(random_bytes(16));
$_SESSION['ldap_test_token'] = $csrfToken;
}
$serviceResult = $ldap->testServiceBind();
$messages = [];
$errors = [];
$loginForm = ['username' => '', 'password' => ''];
$passwordForm = ['username' => '', 'current_password' => '', 'new_password' => '', 'new_password_confirm' => ''];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$postedToken = (string) ($_POST['csrf_token'] ?? '');
if ($postedToken === '' || !hash_equals($csrfToken, $postedToken)) {
$errors[] = 'Die Formularprüfung ist fehlgeschlagen.';
} else {
$action = (string) ($_POST['action'] ?? '');
if ($action === 'test-login') {
$loginForm['username'] = trim((string) ($_POST['username'] ?? ''));
$loginForm['password'] = (string) ($_POST['password'] ?? '');
if ($loginForm['username'] === '' || $loginForm['password'] === '') {
$errors[] = 'Für den Login-Test sind Benutzername und Passwort erforderlich.';
} else {
$result = $ldap->testUserCredentials($loginForm['username'], $loginForm['password']);
if ($result['success'] ?? false) {
$messages[] = $result['message'] . ' DN: ' . (string) ($result['dn'] ?? '');
} else {
$errors[] = (string) ($result['message'] ?? 'LDAP-Login fehlgeschlagen.');
}
}
}
if ($action === 'change-password') {
$passwordForm['username'] = trim((string) ($_POST['username'] ?? ''));
$passwordForm['current_password'] = (string) ($_POST['current_password'] ?? '');
$passwordForm['new_password'] = (string) ($_POST['new_password'] ?? '');
$passwordForm['new_password_confirm'] = (string) ($_POST['new_password_confirm'] ?? '');
if ($passwordForm['username'] === '') {
$errors[] = 'Für die Passwortänderung ist ein Benutzername erforderlich.';
}
if ($passwordForm['current_password'] === '') {
$errors[] = 'Bitte das aktuelle Passwort angeben, damit der Login vorab geprüft werden kann.';
}
if (strlen($passwordForm['new_password']) < 12) {
$errors[] = 'Das neue Passwort muss mindestens 12 Zeichen lang sein.';
}
if ($passwordForm['new_password'] !== $passwordForm['new_password_confirm']) {
$errors[] = 'Die neuen Passwörter stimmen nicht überein.';
}
if ($errors === []) {
$loginCheck = $ldap->testUserCredentials($passwordForm['username'], $passwordForm['current_password']);
if (!(bool) ($loginCheck['success'] ?? false)) {
$errors[] = 'Der Vorab-Login mit aktuellem Passwort ist fehlgeschlagen: ' . (string) ($loginCheck['message'] ?? '');
} else {
$result = $ldap->updateUserPassword($passwordForm['username'], $passwordForm['new_password']);
if ($result['success'] ?? false) {
$messages[] = $result['message'] . ' DN: ' . (string) ($result['dn'] ?? '');
$passwordForm = ['username' => '', 'current_password' => '', 'new_password' => '', 'new_password_confirm' => ''];
} else {
$errors[] = (string) ($result['message'] ?? 'Passwortänderung fehlgeschlagen.');
}
}
}
}
}
}
?>
LDAP-Test
Kusche.Berlin
LDAP-Test
Hier kannst du direkt den LDAP-Login prüfen und das Passwort inklusive Samba-Feldern aktualisieren.
Service-Bind
= htmlspecialchars((string) ($serviceResult['message'] ?? ''), ENT_QUOTES) ?>
Ergebnis
- = htmlspecialchars($message, ENT_QUOTES) ?>
Bitte prüfen
- = htmlspecialchars($error, ENT_QUOTES) ?>