From 57f47dd69c0385bab1f43203d403f3a912ad33d5 Mon Sep 17 00:00:00 2001
From: philipp lang <philipp@aweos.de>
Date: Thu, 6 Oct 2022 23:47:35 +0200
Subject: [PATCH] Add auto discovery

---
 app/Dav/AddressBookBackend.php | 2 +-
 app/Dav/Principal.php          | 7 ++++++-
 app/Dav/ServiceProvider.php    | 2 ++
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/app/Dav/AddressBookBackend.php b/app/Dav/AddressBookBackend.php
index aa1901f8..97732d5a 100644
--- a/app/Dav/AddressBookBackend.php
+++ b/app/Dav/AddressBookBackend.php
@@ -33,7 +33,7 @@ class AddressBookBackend extends AbstractBackend
      */
     public function getAddressBooksForUser($principalUri)
     {
-        if (1 !== preg_match('/^\/principals\/(.*)$/', $principalUri, $matches)) {
+        if (1 !== preg_match('/^principals\/(.*)$/', $principalUri, $matches)) {
             return [];
         }
 
diff --git a/app/Dav/Principal.php b/app/Dav/Principal.php
index a221ea15..e9f8181a 100644
--- a/app/Dav/Principal.php
+++ b/app/Dav/Principal.php
@@ -151,6 +151,11 @@ class Principal implements PrincipalBackendInterface
      */
     public function getGroupMembership($principal)
     {
+        if (1 !== preg_match('/^\/principals\/(.*)$/', $principal, $matches)) {
+            return null;
+        }
+
+        return ['addressbooks/'.$matches[1]];
     }
 
     /**
@@ -171,7 +176,7 @@ class Principal implements PrincipalBackendInterface
     {
         return [
             '{DAV:}displayname' => $user->name,
-            'uri' => '/principals/'.$user->email,
+            'uri' => 'principals/'.$user->email,
             '{http://sabredav.org/ns}email-address' => $user->email,
         ];
     }
diff --git a/app/Dav/ServiceProvider.php b/app/Dav/ServiceProvider.php
index 3a94c8f8..b32ca6af 100644
--- a/app/Dav/ServiceProvider.php
+++ b/app/Dav/ServiceProvider.php
@@ -10,6 +10,7 @@ use Sabre\CardDAV\Plugin as CardDAVPlugin;
 use Sabre\DAV\Auth\Plugin as AuthPlugin;
 use Sabre\DAV\Browser\Plugin as BrowserPlugin;
 use Sabre\DAVACL\AbstractPrincipalCollection;
+use Sabre\DAVACL\Plugin as AclPlugin;
 use Sabre\DAVACL\PrincipalCollection;
 
 class ServiceProvider extends BaseServiceProvider
@@ -57,6 +58,7 @@ class ServiceProvider extends BaseServiceProvider
             new BrowserPlugin(),
             new AuthPlugin($authBackend),
             new CardDAVPlugin(),
+            new AclPlugin(),
         ];
     }
 }