For 9.0 we don't have the possibility to store calendar and addressbook properties on a per-user basis and therefore we simple don't allow this for now

remotes/origin/design-experiment
Thomas Müller 10 years ago committed by Joas Schilling
parent d98217d8ba
commit 95e218b00c
  1. 8
      apps/dav/lib/caldav/calendar.php
  2. 14
      apps/dav/lib/carddav/addressbook.php
  3. 16
      apps/dav/tests/unit/caldav/calendartest.php
  4. 16
      apps/dav/tests/unit/carddav/addressbooktest.php

@ -4,6 +4,7 @@ namespace OCA\DAV\CalDAV;
use OCA\DAV\DAV\Sharing\IShareable; use OCA\DAV\DAV\Sharing\IShareable;
use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\PropPatch;
class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
@ -103,4 +104,11 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
} }
parent::delete(); parent::delete();
} }
function propPatch(PropPatch $propPatch) {
if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
throw new Forbidden();
}
parent::propPatch($propPatch);
}
} }

@ -23,6 +23,7 @@ namespace OCA\DAV\CardDAV;
use OCA\DAV\DAV\Sharing\IShareable; use OCA\DAV\DAV\Sharing\IShareable;
use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotFound; use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\PropPatch;
class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
@ -83,14 +84,14 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
} }
// add the current user // add the current user
if (isset($this->addressBookInfo['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal'])) { if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) {
$owner = $this->addressBookInfo['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal']; $owner = $this->addressBookInfo['{http://owncloud.org/ns}owner-principal'];
$acl[] = [ $acl[] = [
'privilege' => '{DAV:}read', 'privilege' => '{DAV:}read',
'principal' => $owner, 'principal' => $owner,
'protected' => true, 'protected' => true,
]; ];
if ($this->addressBookInfo['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only']) { if ($this->addressBookInfo['{http://owncloud.org/ns}read-only']) {
$acl[] = [ $acl[] = [
'privilege' => '{DAV:}write', 'privilege' => '{DAV:}write',
'principal' => $owner, 'principal' => $owner,
@ -162,6 +163,13 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
parent::delete(); parent::delete();
} }
function propPatch(PropPatch $propPatch) {
if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) {
throw new Forbidden();
}
parent::propPatch($propPatch);
}
public function getContactsGroups() { public function getContactsGroups() {
/** @var CardDavBackend $cardDavBackend */ /** @var CardDavBackend $cardDavBackend */
$cardDavBackend = $this->carddavBackend; $cardDavBackend = $this->carddavBackend;

@ -23,6 +23,7 @@ namespace OCA\DAV\Tests\Unit\CalDAV;
use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CalDAV\Calendar;
use Sabre\DAV\PropPatch;
use Test\TestCase; use Test\TestCase;
class CalendarTest extends TestCase { class CalendarTest extends TestCase {
@ -63,4 +64,19 @@ class CalendarTest extends TestCase {
$c = new Calendar($backend, $calendarInfo); $c = new Calendar($backend, $calendarInfo);
$c->delete(); $c->delete();
} }
/**
* @expectedException \Sabre\DAV\Exception\Forbidden
*/
public function testPropPatch() {
/** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->disableOriginalConstructor()->getMock();
$calendarInfo = [
'{http://owncloud.org/ns}owner-principal' => 'user1',
'principaluri' => 'user2',
'id' => 666
];
$c = new Calendar($backend, $calendarInfo);
$c->propPatch(new PropPatch([]));
}
} }

@ -23,6 +23,7 @@ namespace OCA\DAV\Tests\Unit\CardDAV;
use OCA\DAV\CardDAV\AddressBook; use OCA\DAV\CardDAV\AddressBook;
use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\CardDAV\CardDavBackend;
use Sabre\DAV\PropPatch;
use Test\TestCase; use Test\TestCase;
class AddressBookTest extends TestCase { class AddressBookTest extends TestCase {
@ -61,4 +62,19 @@ class AddressBookTest extends TestCase {
$c = new AddressBook($backend, $calendarInfo); $c = new AddressBook($backend, $calendarInfo);
$c->delete(); $c->delete();
} }
/**
* @expectedException \Sabre\DAV\Exception\Forbidden
*/
public function testPropPatch() {
/** @var \PHPUnit_Framework_MockObject_MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock();
$calendarInfo = [
'{http://owncloud.org/ns}owner-principal' => 'user1',
'principaluri' => 'user2',
'id' => 666
];
$c = new AddressBook($backend, $calendarInfo);
$c->propPatch(new PropPatch([]));
}
} }

Loading…
Cancel
Save