summaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-03-17 10:31:33 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-03-31 09:05:39 +0200
commite664e582fb0c4878186001b84448dfa1c7034789 (patch)
tree289084492f379dc858aef89239a83e3a7bda781e /apps/dav
parent9bd5fd23e7ba67237da091cacba75a13b2fb6b1b (diff)
downloadnextcloud-server-e664e582fb0c4878186001b84448dfa1c7034789.tar.gz
nextcloud-server-e664e582fb0c4878186001b84448dfa1c7034789.zip
Fix group shares on v1 caldav and carddav - fixes #23328
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/lib/caldav/caldavbackend.php3
-rw-r--r--apps/dav/lib/carddav/carddavbackend.php2
-rw-r--r--apps/dav/lib/connector/sabre/principal.php4
3 files changed, 5 insertions, 4 deletions
diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php
index a188d652eed..3869d36886f 100644
--- a/apps/dav/lib/caldav/caldavbackend.php
+++ b/apps/dav/lib/caldav/caldavbackend.php
@@ -142,6 +142,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
* @return array
*/
function getCalendarsForUser($principalUri) {
+ $principalUriOriginal = $principalUri;
$principalUri = $this->convertPrincipal($principalUri, true);
$fields = array_values($this->propertyMap);
$fields[] = 'id';
@@ -188,7 +189,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$stmt->closeCursor();
// query for shared calendars
- $principals = $this->principalBackend->getGroupMembership($principalUri);
+ $principals = $this->principalBackend->getGroupMembership($principalUriOriginal, true);
$principals[]= $principalUri;
$fields = array_values($this->propertyMap);
diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php
index 89154c39d37..cabafd5c3ac 100644
--- a/apps/dav/lib/carddav/carddavbackend.php
+++ b/apps/dav/lib/carddav/carddavbackend.php
@@ -130,7 +130,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$result->closeCursor();
// query for shared calendars
- $principals = $this->principalBackend->getGroupMembership($principalUri);
+ $principals = $this->principalBackend->getGroupMembership($principalUri, true);
$principals[]= $principalUri;
$query = $this->db->getQueryBuilder();
diff --git a/apps/dav/lib/connector/sabre/principal.php b/apps/dav/lib/connector/sabre/principal.php
index 31de4e5bad1..49fb4efdee2 100644
--- a/apps/dav/lib/connector/sabre/principal.php
+++ b/apps/dav/lib/connector/sabre/principal.php
@@ -135,7 +135,7 @@ class Principal implements BackendInterface {
* @return array
* @throws Exception
*/
- public function getGroupMembership($principal) {
+ public function getGroupMembership($principal, $needGroups = false) {
list($prefix, $name) = URLUtil::splitPath($principal);
if ($prefix === $this->principalPrefix) {
@@ -144,7 +144,7 @@ class Principal implements BackendInterface {
throw new Exception('Principal not found');
}
- if ($this->hasGroups) {
+ if ($this->hasGroups || $needGroups) {
$groups = $this->groupManager->getUserGroups($user);
$groups = array_map(function($group) {
/** @var IGroup $group */