Определение прав доступа к календарям CalDAV

Я создаю приложение PHP, которое будет записывать события в календарь CalDAV (групповая программа Kolab). Для этого я прошу домашний календарь соответствующего пользователя. После этого я хочу использовать только те календари, для которых у меня есть права на запись. Вполне может быть, что я получил общие календари, которые мне разрешено только читать. Итак, как мне определить права доступа к календарю до того, как я зарегистрирую событие и получу сообщение об ошибке?

Заранее спасибо.


person Thomas Jörn    schedule 19.07.2019    source источник


Ответы (1)


Чтобы получить права на ресурсы/коллекцию CalDAV(/*DAV), вы можете запросить {DAV:}current-user-privilege-set при получении списка календарей.

Это часть RFC 3744 (WebDAV ACL). Образец из RFC:

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="khare",
     realm="[email protected]", nonce="...",
     uri="/papers/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:current-user-privilege-set/>
     </D:prop>
   </D:propfind>
   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
     <D:href>http://www.example.com/papers/</D:href>
     <D:propstat>
       <D:prop>
         <D:current-user-privilege-set>
           <D:privilege><D:read/></D:privilege>
         </D:current-user-privilege-set>
       </D:prop>
       <D:status>HTTP/1.1 200 OK</D:status>
     </D:propstat>
     </D:response>
   </D:multistatus>
person hnh    schedule 20.07.2019
comment
Здравствуйте, Хельге, это было очень полезно! Большое спасибо за то, что поставили меня на правильный путь. - person Thomas Jörn; 22.07.2019