adsd
This commit is contained in:
@@ -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, '/');
|
||||
|
||||
Reference in New Issue
Block a user