checkUsername((string) ($currentAuthUser['username'] ?? ''));
if (!($accountCheck['allowed'] ?? false)) {
unset($_SESSION['desktop_auth']);
header('Location: /auth/inactive/?message=' . urlencode((string) ($accountCheck['message'] ?? 'Dieses Konto ist noch nicht freigeschaltet.')), true, 302);
exit;
}
}
$currentUser = is_array($_SESSION['desktop_auth']['user'] ?? null) ? $_SESSION['desktop_auth']['user'] : [];
$currentGroups = array_map(static fn (string $group): string => strtolower(trim($group, '/')), array_values(array_map('strval', (array) ($currentUser['groups'] ?? []))));
if (!in_array('administrators', $currentGroups, true)) {
http_response_code(403);
echo 'Kein Zugriff auf User Management.';
exit;
}
$csrfToken = (string) ($_SESSION['user_management_token'] ?? '');
if ($csrfToken === '') {
$csrfToken = bin2hex(random_bytes(16));
$_SESSION['user_management_token'] = $csrfToken;
}
$messages = [];
$errors = [];
$selectedId = trim((string) ($_GET['id'] ?? $_POST['selected_id'] ?? ''));
$manualUsername = trim((string) ($_POST['manual_username'] ?? ''));
$manualResetUsername = trim((string) ($_POST['reset_username'] ?? ''));
$manualResetPassword = (string) ($_POST['reset_password'] ?? '');
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 === 'approve-registration') {
$groupDns = array_values(array_filter(array_map('strval', (array) ($_POST['group_dns'] ?? []))));
$memberOfList = implode(PHP_EOL, $groupDns);
$result = $registration->approve($selectedId, [
'member_of_list' => $memberOfList,
'admin_note' => (string) ($_POST['admin_note'] ?? ''),
], (string) ($currentUser['username'] ?? 'administrator'));
if (($result['success'] ?? false) !== true) {
$errors = array_merge($errors, array_values(array_map('strval', (array) ($result['errors'] ?? []))));
} else {
$messages[] = 'Registrierung wurde freigeschaltet.';
}
} elseif ($action === 'deactivate-user') {
$result = $registration->deactivateUser($manualUsername);
($result['success'] ?? false) ? $messages[] = (string) ($result['message'] ?? '') : $errors[] = (string) ($result['message'] ?? '');
} elseif ($action === 'activate-user') {
$groupDns = array_values(array_filter(array_map('strval', (array) ($_POST['manual_group_dns'] ?? []))));
$result = $registration->activateExistingUser($manualUsername, $groupDns);
($result['success'] ?? false) ? $messages[] = (string) ($result['message'] ?? '') : $errors[] = (string) ($result['message'] ?? '');
} elseif ($action === 'send-reset-mail') {
$origin = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http') . '://' . ($_SERVER['HTTP_HOST'] ?? 'localhost');
$result = $registration->sendPasswordReset($manualResetUsername, $origin);
($result['success'] ?? false) ? $messages[] = (string) ($result['message'] ?? '') : $errors[] = (string) ($result['message'] ?? '');
} elseif ($action === 'set-password') {
if (strlen($manualResetPassword) < 12) {
$errors[] = 'Das neue Passwort muss mindestens 12 Zeichen lang sein.';
} else {
$result = $registration->setUserPassword($manualResetUsername, $manualResetPassword);
($result['success'] ?? false) ? $messages[] = (string) ($result['message'] ?? '') : $errors[] = (string) ($result['message'] ?? '');
}
}
}
}
$pendingRequests = $registration->pendingApprovals();
$availableGroups = $registration->availableGroups();
$selected = $selectedId !== ''
? $registration->find($selectedId)
: ($pendingRequests[0] ?? null);
?>
User Management
Kusche.Berlin
User Management
Nur für Benutzer in der Gruppe administrators . Hier werden Neuregistrierungen freigeschaltet sowie bestehende LDAP-Benutzer aktiviert, deaktiviert oder zurückgesetzt.
Ergebnis
= htmlspecialchars($message, ENT_QUOTES) ?>
Bitte prüfen
= htmlspecialchars($error, ENT_QUOTES) ?>