adsd
All checks were successful
Deploy / deploy-staging (push) Successful in 24s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-23 00:09:04 +02:00
parent baa57bb913
commit 0abc406fdc

View File

@@ -248,6 +248,61 @@ namespace ModulesCore {
return PdoFactory::createFromArray($db);
}
/**
* @return array<int, array<string, mixed>>
*/
public function knownAuthUsers(): array
{
$pdo = LegacyCompat::app()->basePdo();
if (!$pdo instanceof \PDO) {
return [];
}
try {
$stmt = $pdo->query(
'SELECT sub, username, email, name, groups, last_login_at
FROM nexus_auth_users
ORDER BY COALESCE(NULLIF(name, \'\'), NULLIF(username, \'\'), email, sub)'
);
if (!$stmt) {
return [];
}
} catch (\Throwable) {
return [];
}
$users = [];
foreach ($stmt->fetchAll(\PDO::FETCH_ASSOC) ?: [] as $row) {
$groups = json_decode((string) ($row['groups'] ?? '[]'), true);
$row['groups'] = is_array($groups)
? array_values(array_filter(array_map('strval', $groups)))
: [];
$users[] = $row;
}
return $users;
}
/**
* @return array<int, string>
*/
public function knownAuthGroups(): array
{
$groups = [];
foreach ($this->knownAuthUsers() as $user) {
foreach (($user['groups'] ?? []) as $group) {
$group = trim((string) $group);
if ($group !== '') {
$groups[] = $group;
}
}
}
sort($groups, SORT_NATURAL | SORT_FLAG_CASE);
return array_values(array_unique($groups));
}
private function modulePath(string $moduleName): string
{
return $this->projectRoot . '/modules/' . trim($moduleName, '/');