diff options
author | Georg Ehrke <developer@georgehrke.com> | 2020-08-11 09:24:08 +0200 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2020-08-18 13:18:00 +0200 |
commit | 14755d85d657ab9bac4458b891c6f43b110b1cf2 (patch) | |
tree | 4eea0f88ac0902dafc25574f9eb1b553c1987797 /apps/dav/lib/DAV | |
parent | f6daf17fa773bd4b9c9aae070e39dfbefe8de935 (diff) | |
download | nextcloud-server-14755d85d657ab9bac4458b891c6f43b110b1cf2.tar.gz nextcloud-server-14755d85d657ab9bac4458b891c6f43b110b1cf2.zip |
Add ability to limit sharing to owner
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav/lib/DAV')
-rw-r--r-- | apps/dav/lib/DAV/Sharing/Plugin.php | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/apps/dav/lib/DAV/Sharing/Plugin.php b/apps/dav/lib/DAV/Sharing/Plugin.php index f8967a788b9..06bc5b2157f 100644 --- a/apps/dav/lib/DAV/Sharing/Plugin.php +++ b/apps/dav/lib/DAV/Sharing/Plugin.php @@ -27,6 +27,7 @@ namespace OCA\DAV\DAV\Sharing; use OCA\DAV\Connector\Sabre\Auth; use OCA\DAV\DAV\Sharing\Xml\Invite; use OCA\DAV\DAV\Sharing\Xml\ShareRequest; +use OCP\IConfig; use OCP\IRequest; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\INode; @@ -46,15 +47,20 @@ class Plugin extends ServerPlugin { /** @var IRequest */ private $request; + /** @var IConfig */ + private $config; + /** * Plugin constructor. * * @param Auth $authBackEnd * @param IRequest $request + * @param IConfig $config */ - public function __construct(Auth $authBackEnd, IRequest $request) { + public function __construct(Auth $authBackEnd, IRequest $request, IConfig $config) { $this->auth = $authBackEnd; $this->request = $request; + $this->config = $config; } /** @@ -164,6 +170,12 @@ class Plugin extends ServerPlugin { if ($acl) { /** @var \Sabre\DAVACL\Plugin $acl */ $acl->checkPrivileges($path, '{DAV:}write'); + + $limitSharingToOwner = $this->config->getAppValue('dav', 'limitAddressBookAndCalendarSharingToOwner', 'no') === 'yes'; + $isOwner = $acl->getCurrentUserPrincipal() === $node->getOwner(); + if ($limitSharingToOwner && !$isOwner) { + return; + } } $node->updateShares($message->set, $message->remove); |