Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-11-15 15:41:08 +0300
committerGitHub <noreply@github.com>2018-11-15 15:41:08 +0300
commit4a71b80b74ba55cabfe9b69cb52500011ae93b13 (patch)
tree2dc2e13bd606f99f418cc43445e7cd369f0d26bc
parentc2000c295cc3a8a61b6c134cb6595dfbe533cf9a (diff)
parent2a31d842eaab87274f091f2d012abae0152c27d6 (diff)
Merge pull request #12460 from nextcloud/bugfix-stable13/dav_shares_hickup
[stable13] fixes dav share issue with owner
-rw-r--r--apps/dav/lib/CalDAV/Calendar.php11
-rw-r--r--apps/dav/lib/CardDAV/AddressBook.php21
-rw-r--r--apps/dav/tests/travis/caldavtest/tests/CalDAV/sharing-calendars.xml10
-rw-r--r--apps/dav/tests/travis/caldavtest/tests/CardDAV/sharing-addressbooks.xml26
4 files changed, 36 insertions, 32 deletions
diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php
index a07bbe93218..e80bffdb9d0 100644
--- a/apps/dav/lib/CalDAV/Calendar.php
+++ b/apps/dav/lib/CalDAV/Calendar.php
@@ -139,6 +139,10 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
];
}
+ if (!$this->isShared()) {
+ return $acl;
+ }
+
if ($this->getOwner() !== parent::getOwner()) {
$acl[] = [
'privilege' => '{DAV:}read',
@@ -168,14 +172,9 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
$acl = $this->caldavBackend->applyShareAcl($this->getResourceId(), $acl);
-
- if (!$this->isShared()) {
- return $acl;
- }
-
$allowedPrincipals = [$this->getOwner(), parent::getOwner(), 'principals/system/public'];
return array_filter($acl, function($rule) use ($allowedPrincipals) {
- return in_array($rule['principal'], $allowedPrincipals);
+ return \in_array($rule['principal'], $allowedPrincipals, true);
});
}
diff --git a/apps/dav/lib/CardDAV/AddressBook.php b/apps/dav/lib/CardDAV/AddressBook.php
index 71202319874..30ce0a3253c 100644
--- a/apps/dav/lib/CardDAV/AddressBook.php
+++ b/apps/dav/lib/CardDAV/AddressBook.php
@@ -105,12 +105,17 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
'privilege' => '{DAV:}read',
'principal' => $this->getOwner(),
'protected' => true,
- ]];
- $acl[] = [
+ ],[
'privilege' => '{DAV:}write',
'principal' => $this->getOwner(),
'protected' => true,
- ];
+ ]
+ ];
+
+ if (!$this->isShared()) {
+ return $acl;
+ }
+
if ($this->getOwner() !== parent::getOwner()) {
$acl[] = [
'privilege' => '{DAV:}read',
@@ -133,11 +138,11 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
];
}
- if ($this->isShared()) {
- return $acl;
- }
-
- return $this->carddavBackend->applyShareAcl($this->getResourceId(), $acl);
+ $acl = $this->carddavBackend->applyShareAcl($this->getResourceId(), $acl);
+ $allowedPrincipals = [$this->getOwner(), parent::getOwner(), 'principals/system/system'];
+ return array_filter($acl, function($rule) use ($allowedPrincipals) {
+ return \in_array($rule['principal'], $allowedPrincipals, true);
+ });
}
public function getChildACL() {
diff --git a/apps/dav/tests/travis/caldavtest/tests/CalDAV/sharing-calendars.xml b/apps/dav/tests/travis/caldavtest/tests/CalDAV/sharing-calendars.xml
index 334fa561aec..6c15a793226 100644
--- a/apps/dav/tests/travis/caldavtest/tests/CalDAV/sharing-calendars.xml
+++ b/apps/dav/tests/travis/caldavtest/tests/CalDAV/sharing-calendars.xml
@@ -73,7 +73,7 @@
<description>Shared calendar exists</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PROPFIND</method>
- <ruri>$calendarhome1:/shared/</ruri>
+ <ruri>$calendarhome2:/shared_shared_by_user01/</ruri>
<header>
<name>Depth</name>
<value>0</value>
@@ -193,7 +193,7 @@
<description>Sharee creates event</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PUT</method>
- <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <ruri>$calendarhome2:/shared_shared_by_user01/1.ics</ruri>
<data>
<content-type>text/calendar; charset=utf-8</content-type>
<filepath>Resource/CalDAV/sharing/calendars/read-write/5.ics</filepath>
@@ -235,7 +235,7 @@
<description>Sharee sees changed event</description>
<request user="$userid2:" pswd="$pswd2:">
<method>GET</method>
- <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <ruri>$calendarhome2:/shared_shared_by_user01/1.ics</ruri>
<verify>
<callback>calendarDataMatch</callback>
<arg>
@@ -263,7 +263,7 @@
<description>Sharee sees new event</description>
<request user="$userid2:" pswd="$pswd2:">
<method>GET</method>
- <ruri>$calendarhome1:/shared/2.ics</ruri>
+ <ruri>$calendarhome2:/shared_shared_by_user01/2.ics</ruri>
<verify>
<callback>calendarDataMatch</callback>
<arg>
@@ -277,7 +277,7 @@
<description>Sharee changes event</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PUT</method>
- <ruri>$calendarhome1:/shared/2.ics</ruri>
+ <ruri>$calendarhome2:/shared_shared_by_user01/2.ics</ruri>
<data>
<content-type>text/calendar; charset=utf-8</content-type>
<filepath>Resource/CalDAV/sharing/calendars/read-write/8.ics</filepath>
diff --git a/apps/dav/tests/travis/caldavtest/tests/CardDAV/sharing-addressbooks.xml b/apps/dav/tests/travis/caldavtest/tests/CardDAV/sharing-addressbooks.xml
index 84ee6265017..99e40f5c68c 100644
--- a/apps/dav/tests/travis/caldavtest/tests/CardDAV/sharing-addressbooks.xml
+++ b/apps/dav/tests/travis/caldavtest/tests/CardDAV/sharing-addressbooks.xml
@@ -17,7 +17,7 @@
<description>POST invitation</description>
<request>
<method>POST</method>
- <ruri>$addressbookpath1:</ruri>
+ <ruri>$addressbookhome1:/addressbook/</ruri>
<data>
<content-type>text/xml; charset=utf-8</content-type>
<filepath>Resource/CardDAV/sharing/read-write/1.xml</filepath>
@@ -31,7 +31,7 @@
<description>Shared addressbook exists</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PROPFIND</method>
- <ruri>$addressbookpath1:/</ruri>
+ <ruri>$addressbookhome2:/addressbook_shared_by_user01/</ruri>
<header>
<name>Depth</name>
<value>0</value>
@@ -62,7 +62,7 @@
</test>
<test name='4a'>
- <description>Shared calendar exists Depth:1</description>
+ <description>Shared addressbook exists Depth:1</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PROPFIND</method>
<ruri>$addressbookhome2:/</ruri>
@@ -100,7 +100,7 @@
</test>
<test name='5'>
- <description>Original calendar unchanged</description>
+ <description>Original addressbook unchanged</description>
<request>
<method>PROPFIND</method>
<ruri>$addressbookpath1:</ruri>
@@ -126,7 +126,7 @@
<description>Sharee creates contact</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PUT</method>
- <ruri>$addressbookpath1:/1.vcf</ruri>
+ <ruri>$addressbookhome2:/addressbook_shared_by_user01/1.vcf</ruri>
<data>
<content-type>text/vcard; charset=utf-8</content-type>
<filepath>Resource/CardDAV/sharing/read-write/6.vcf</filepath>
@@ -171,7 +171,7 @@
<description>Sharee sees changed contact</description>
<request user="$userid2:" pswd="$pswd2:">
<method>GET</method>
- <ruri>$addressbookpath1:/1.vcf</ruri>
+ <ruri>$addressbookhome2:/addressbook_shared_by_user01/1.vcf</ruri>
<verify>
<callback>addressDataMatch</callback>
<arg>
@@ -183,7 +183,7 @@
</test>
<test name='10'>
- <description>Sharer creates event</description>
+ <description>Sharer creates contact</description>
<request>
<method>PUT</method>
<ruri>$addressbookpath1:/2.vcf</ruri>
@@ -197,10 +197,10 @@
</request>
</test>
<test name='11'>
- <description>Sharee sees new event</description>
+ <description>Sharee sees new contact</description>
<request user="$userid2:" pswd="$pswd2:">
<method>GET</method>
- <ruri>$addressbookpath1:/2.vcf</ruri>
+ <ruri>$addressbookhome2:/addressbook_shared_by_user01/2.vcf</ruri>
<verify>
<callback>addressDataMatch</callback>
<arg>
@@ -211,10 +211,10 @@
</request>
</test>
<test name='12'>
- <description>Sharee changes event</description>
+ <description>Sharee changes contact</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PUT</method>
- <ruri>$addressbookpath1:/2.vcf</ruri>
+ <ruri>$addressbookhome2:/addressbook_shared_by_user01/2.vcf</ruri>
<data>
<content-type>text/vcard; charset=utf-8</content-type>
<filepath>Resource/CardDAV/sharing/read-write/9.vcf</filepath>
@@ -225,7 +225,7 @@
</request>
</test>
<test name='13'>
- <description>Sharer sees changed event</description>
+ <description>Sharer sees changed contact</description>
<request>
<method>GET</method>
<ruri>$addressbookpath1:/2.vcf</ruri>
@@ -281,7 +281,7 @@
</verify> </request>
</test>
<test name='16'>
- <description>Shared calendar no longer exists Depth:1</description>
+ <description>Shared addressbook no longer exists Depth:1</description>
<request user="$userid2:" pswd="$pswd2:">
<method>PROPFIND</method>
<ruri>$addressbookhome2:</ruri>