diff --git a/partials/landingpages/modules/access.php b/partials/landingpages/modules/access.php
index 99bafb2..8fed0e9 100644
--- a/partials/landingpages/modules/access.php
+++ b/partials/landingpages/modules/access.php
@@ -12,16 +12,50 @@ if (!$module) {
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ $selectedUsers = is_array($_POST['auth_user_values'] ?? null) ? $_POST['auth_user_values'] : [];
+ $selectedGroups = is_array($_POST['auth_group_values'] ?? null) ? $_POST['auth_group_values'] : [];
+ $manualUsers = (string)($_POST['auth_users'] ?? '');
+ $manualGroups = (string)($_POST['auth_groups'] ?? '');
+
modules()->saveAuth($moduleName, [
'required' => isset($_POST['auth_required']),
- 'users' => (string)($_POST['auth_users'] ?? ''),
- 'groups' => (string)($_POST['auth_groups'] ?? ''),
+ 'users' => array_merge($selectedUsers, preg_split('/[,\\n]+/', $manualUsers) ?: []),
+ 'groups' => array_merge($selectedGroups, preg_split('/[,\\n]+/', $manualGroups) ?: []),
]);
$notice = 'Zugriff gespeichert.';
$module = modules()->get($moduleName) ?: $module;
}
$authConfig = is_array($module['auth'] ?? null) ? $module['auth'] : ['required' => false, 'users' => [], 'groups' => []];
+$allowedUsers = is_array($authConfig['users'] ?? null) ? array_values(array_filter(array_map('strval', $authConfig['users']))) : [];
+$allowedGroups = is_array($authConfig['groups'] ?? null) ? array_values(array_filter(array_map('strval', $authConfig['groups']))) : [];
+$knownUsers = modules()->knownAuthUsers();
+$knownGroups = modules()->knownAuthGroups();
+$currentUser = auth_user();
+if (is_array($currentUser) && trim((string)($currentUser['sub'] ?? '')) !== '') {
+ $currentSub = (string)$currentUser['sub'];
+ $hasCurrentUser = false;
+ foreach ($knownUsers as $knownUser) {
+ if ((string)($knownUser['sub'] ?? '') === $currentSub) {
+ $hasCurrentUser = true;
+ break;
+ }
+ }
+ if (!$hasCurrentUser) {
+ $knownUsers[] = [
+ 'sub' => $currentSub,
+ 'username' => (string)($currentUser['username'] ?? ''),
+ 'email' => (string)($currentUser['email'] ?? ''),
+ 'name' => (string)($currentUser['name'] ?? ''),
+ 'groups' => is_array($currentUser['groups'] ?? null) ? $currentUser['groups'] : [],
+ ];
+ }
+}
+$knownGroups = array_values(array_unique(array_merge($knownGroups, auth_groups())));
+sort($knownGroups, SORT_NATURAL | SORT_FLAG_CASE);
+$knownUserValues = array_column($knownUsers, 'sub');
+$manualUsers = array_values(array_filter($allowedUsers, fn (string $value): bool => !in_array($value, $knownUserValues, true)));
+$manualGroups = array_values(array_filter($allowedGroups, fn (string $value): bool => !in_array($value, $knownGroups, true)));
?>
Zugriff
@@ -40,15 +74,48 @@ $authConfig = is_array($module['auth'] ?? null) ? $module['auth'] : ['required'
Login fuer dieses Modul erforderlich
-