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

Freischaltung

Benutzer:

E-Mail:

Status:

Bestehenden Benutzer verwalten

Passwort zurücksetzen