adsd
This commit is contained in:
@@ -248,6 +248,61 @@ namespace ModulesCore {
|
|||||||
return PdoFactory::createFromArray($db);
|
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
|
private function modulePath(string $moduleName): string
|
||||||
{
|
{
|
||||||
return $this->projectRoot . '/modules/' . trim($moduleName, '/');
|
return $this->projectRoot . '/modules/' . trim($moduleName, '/');
|
||||||
|
|||||||
Reference in New Issue
Block a user