summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2020-12-11 14:04:40 +0100
committerArthur Schiwon <blizzz@arthur-schiwon.de>2020-12-15 11:53:39 +0100
commit2b017b704a4a49801bc09774a1a17cfedca9cc7e (patch)
treefe97cec90a860aee749340c91d3bb373d061fadf /apps/dav/lib
parent8506d0864b3a017baeed2ad5f9a032ae1d7a6734 (diff)
downloadnextcloud-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.php3
-rw-r--r--apps/dav/lib/DAV/GroupPrincipalBackend.php16
-rw-r--r--apps/dav/lib/RootCollection.php2
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