diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-11-15 13:32:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-15 13:32:54 +0100 |
commit | a4d81ba1641db8136b13d2bb7b7c0176c916ec7e (patch) | |
tree | 0c14d631a9a4ba28d226da60a247a73f026b9d92 | |
parent | 3ab8d840c9e61933d0aa1fe319f9bed21c44a93f (diff) | |
parent | 7179ffe37b349993ab94a87b4f89db3cdcef421b (diff) | |
download | nextcloud-server-a4d81ba1641db8136b13d2bb7b7c0176c916ec7e.tar.gz nextcloud-server-a4d81ba1641db8136b13d2bb7b7c0176c916ec7e.zip |
Merge pull request #12458 from nextcloud/bugfix/dav_shares_hickup
fixes dav share issue with owner
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> |