From a5bbde3366dcac48477177a01522216cff70fc56 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Wed, 20 Dec 2023 12:53:59 +0100 Subject: [PATCH] feat(groups): enable group support display names Signed-off-by: Arthur Schiwon --- lib/GroupBackend.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/GroupBackend.php b/lib/GroupBackend.php index c3a16acbd..e4ae30e06 100644 --- a/lib/GroupBackend.php +++ b/lib/GroupBackend.php @@ -34,11 +34,12 @@ use OCP\Group\Backend\ICountUsersBackend; use OCP\Group\Backend\ICreateGroupBackend; use OCP\Group\Backend\IDeleteGroupBackend; +use OCP\Group\Backend\IGetDisplayNameBackend; use OCP\Group\Backend\INamedBackend; use OCP\Group\Backend\IRemoveFromGroupBackend; use OCP\IDBConnection; -class GroupBackend extends ABackend implements IAddToGroupBackend, ICountUsersBackend, ICreateGroupBackend, IDeleteGroupBackend, IRemoveFromGroupBackend, INamedBackend { +class GroupBackend extends ABackend implements IAddToGroupBackend, ICountUsersBackend, ICreateGroupBackend, IDeleteGroupBackend, IGetDisplayNameBackend, IRemoveFromGroupBackend, INamedBackend { /** @var IDBConnection */ private $dbc; @@ -79,7 +80,6 @@ public function getUserGroups($uid): array { $groups = []; while ($row = $cursor->fetch()) { $groups[] = $row['gid']; - $this->groupCache[$row['gid']] = $row['gid']; } $cursor->closeCursor(); @@ -91,7 +91,7 @@ public function getUserGroups($uid): array { */ public function getGroups($search = '', $limit = null, $offset = null): array { $query = $this->dbc->getQueryBuilder(); - $query->select('gid') + $query->select('gid', 'displayname') ->from(self::TABLE_GROUPS) ->orderBy('gid', 'ASC'); @@ -112,6 +112,7 @@ public function getGroups($search = '', $limit = null, $offset = null): array { $groups = []; while ($row = $result->fetch()) { $groups[] = $row['gid']; + $this->groupCache[$row['gid']] = $row['displayname']; } $result->closeCursor(); @@ -128,15 +129,16 @@ public function groupExists($gid): bool { } $qb = $this->dbc->getQueryBuilder(); - $cursor = $qb->select('gid') + $cursor = $qb->select('gid', 'displayname') ->from(self::TABLE_GROUPS) ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) + ->setMaxResults(1) ->executeQuery(); $result = $cursor->fetch(); $cursor->closeCursor(); if ($result !== false) { - $this->groupCache[$gid] = $gid; + $this->groupCache[$gid] = $result['displayname']; return true; } return false; @@ -212,7 +214,7 @@ public function createGroup(string $gid, string $samlGid = null): bool { } // Add to cache - $this->groupCache[$gid] = $gid; + $this->groupCache[$gid] = $samlGid; return $result === 1; } @@ -297,4 +299,12 @@ public function deleteGroup(string $gid): bool { public function getBackendName(): string { return 'user_saml'; } + + public function getDisplayName(string $gid): string { + if (!isset($this->groupCache[$gid])) { + $this->getGroups($gid); + } + + return $this->groupCache[$gid] ?? $gid; + } }