diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2020-12-11 14:04:40 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2020-12-15 11:53:39 +0100 |
commit | 2b017b704a4a49801bc09774a1a17cfedca9cc7e (patch) | |
tree | fe97cec90a860aee749340c91d3bb373d061fadf /apps/dav/lib | |
parent | 8506d0864b3a017baeed2ad5f9a032ae1d7a6734 (diff) | |
download | nextcloud-server-2b017b704a4a49801bc09774a1a17cfedca9cc7e.tar.gz nextcloud-server-2b017b704a4a49801bc09774a1a17cfedca9cc7e.zip |
dav search to honour sharing.maxAutocompleteResults setting
- it is being used on frontend by users
- user and big instances benefit from quicker results and less load
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/dav/lib')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/Principal.php | 3 | ||||
-rw-r--r-- | apps/dav/lib/DAV/GroupPrincipalBackend.php | 16 | ||||
-rw-r--r-- | apps/dav/lib/RootCollection.php | 2 |
3 files changed, 15 insertions, 6 deletions
diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php index 5dedb0a7d7b..12e1d18faa2 100644 --- a/apps/dav/lib/Connector/Sabre/Principal.php +++ b/apps/dav/lib/Connector/Sabre/Principal.php @@ -270,6 +270,7 @@ class Principal implements BackendInterface { } } + $searchLimit = $this->config->getSystemValue('sharing.maxAutocompleteResults', null); foreach ($searchProperties as $prop => $value) { switch ($prop) { case '{http://sabredav.org/ns}email-address': @@ -305,7 +306,7 @@ class Principal implements BackendInterface { break; case '{DAV:}displayname': - $users = $this->userManager->searchDisplayName($value); + $users = $this->userManager->searchDisplayName($value, $searchLimit); if (!$allowEnumeration) { $users = \array_filter($users, static function (IUser $user) use ($value) { diff --git a/apps/dav/lib/DAV/GroupPrincipalBackend.php b/apps/dav/lib/DAV/GroupPrincipalBackend.php index 38944317424..747976b6ad3 100644 --- a/apps/dav/lib/DAV/GroupPrincipalBackend.php +++ b/apps/dav/lib/DAV/GroupPrincipalBackend.php @@ -27,6 +27,7 @@ namespace OCA\DAV\DAV; +use OCP\IConfig; use OCP\IGroup; use OCP\IGroupManager; use OCP\IUser; @@ -47,18 +48,24 @@ class GroupPrincipalBackend implements BackendInterface { /** @var IShareManager */ private $shareManager; + /** @var IConfig */ + private $config; /** * @param IGroupManager $IGroupManager * @param IUserSession $userSession * @param IShareManager $shareManager */ - public function __construct(IGroupManager $IGroupManager, - IUserSession $userSession, - IShareManager $shareManager) { + public function __construct( + IGroupManager $IGroupManager, + IUserSession $userSession, + IShareManager $shareManager, + IConfig $config + ) { $this->groupManager = $IGroupManager; $this->userSession = $userSession; $this->shareManager = $shareManager; + $this->config = $config; } /** @@ -205,10 +212,11 @@ class GroupPrincipalBackend implements BackendInterface { $restrictGroups = $this->groupManager->getUserGroupIds($user); } + $searchLimit = $this->config->getSystemValue('sharing.maxAutocompleteResults', null); foreach ($searchProperties as $prop => $value) { switch ($prop) { case '{DAV:}displayname': - $groups = $this->groupManager->search($value); + $groups = $this->groupManager->search($value, $searchLimit); $results[] = array_reduce($groups, function (array $carry, IGroup $group) use ($restrictGroups) { $gid = $group->getGID(); diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php index 83f3691959b..b08775d80f6 100644 --- a/apps/dav/lib/RootCollection.php +++ b/apps/dav/lib/RootCollection.php @@ -72,7 +72,7 @@ class RootCollection extends SimpleCollection { $proxyMapper, \OC::$server->getConfig() ); - $groupPrincipalBackend = new GroupPrincipalBackend($groupManager, $userSession, $shareManager); + $groupPrincipalBackend = new GroupPrincipalBackend($groupManager, $userSession, $shareManager, $config); $calendarResourcePrincipalBackend = new ResourcePrincipalBackend($db, $userSession, $groupManager, $logger, $proxyMapper); $calendarRoomPrincipalBackend = new RoomPrincipalBackend($db, $userSession, $groupManager, $logger, $proxyMapper); // as soon as debug mode is enabled we allow listing of principals |