When sharing calendars and addressbooks the principal has to be verified to be valid
d3fb8fcdd3
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
parent
ed0069b8e6
commit
3a133b151f
|
@ -203,7 +203,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->caldavBackend->updateShares($this, [], [
|
$this->caldavBackend->updateShares($this, [], [
|
||||||
'href' => $principal
|
$principal
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,7 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->carddavBackend->updateShares($this, [], [
|
$this->carddavBackend->updateShares($this, [], [
|
||||||
'href' => $principal
|
$principal
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -325,6 +325,13 @@ class Principal implements BackendInterface {
|
||||||
return $this->principalPrefix . '/' . $user->getUID();
|
return $this->principalPrefix . '/' . $user->getUID();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (substr($uri, 0, 10) === 'principal:') {
|
||||||
|
$principal = substr($uri, 10);
|
||||||
|
$principal = $this->getPrincipalByPath($principal);
|
||||||
|
if ($principal !== null) {
|
||||||
|
return $principal['uri'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,12 +67,18 @@ class Backend {
|
||||||
* @param string[] $add
|
* @param string[] $add
|
||||||
* @param string[] $remove
|
* @param string[] $remove
|
||||||
*/
|
*/
|
||||||
public function updateShares($shareable, $add, $remove) {
|
public function updateShares(IShareable $shareable, array $add, array $remove) {
|
||||||
foreach($add as $element) {
|
foreach($add as $element) {
|
||||||
$this->shareWith($shareable, $element);
|
$principal = $this->principalBackend->findByUri($element['href'], '');
|
||||||
|
if ($principal !== '') {
|
||||||
|
$this->shareWith($shareable, $element);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach($remove as $element) {
|
foreach($remove as $element) {
|
||||||
$this->unshare($shareable, $element);
|
$principal = $this->principalBackend->findByUri($element, '');
|
||||||
|
if ($principal !== '') {
|
||||||
|
$this->unshare($shareable, $element);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue