diff --git a/inc/CalDAVPrincipal.php b/inc/CalDAVPrincipal.php index 6b1f4281..f5c9a821 100644 --- a/inc/CalDAVPrincipal.php +++ b/inc/CalDAVPrincipal.php @@ -504,8 +504,12 @@ class CalDAVPrincipal * Return the privileges bits for the current session user to this resource */ function Privileges() { + global $session; if ( !isset($this->privileges) ) $this->privileges = 0; if ( is_string($this->privileges) ) $this->privileges = bindec( $this->privileges ); + if ( $this->_is_group && in_array(ConstructURL('/'.$session->username.'/'), $this->GroupMemberSet()) ) { + $this->privileges |= privilege_to_bits( array('DAV::read', 'DAV::read-current-user-privilege-set') ); + } return $this->privileges; } diff --git a/testing/tests/regression-suite/0224-Moz-OPTIONS-principal.result b/testing/tests/regression-suite/0224-Moz-OPTIONS-principal.result new file mode 100644 index 00000000..e69de29b diff --git a/testing/tests/regression-suite/0224-Moz-OPTIONS-principal.test b/testing/tests/regression-suite/0224-Moz-OPTIONS-principal.test new file mode 100644 index 00000000..03be9f38 --- /dev/null +++ b/testing/tests/regression-suite/0224-Moz-OPTIONS-principal.test @@ -0,0 +1,9 @@ +# +# Do an OPTIONS request against our own principal-URL +# +TYPE=OPTIONS +URL=http://mycaldav/caldav.php/user1/ + +HEADER=User-Agent: DAViCalTester/1.0 + +HEAD diff --git a/testing/tests/regression-suite/0225-Moz-OPTIONS-group-principal.result b/testing/tests/regression-suite/0225-Moz-OPTIONS-group-principal.result new file mode 100644 index 00000000..e69de29b diff --git a/testing/tests/regression-suite/0225-Moz-OPTIONS-group-principal.test b/testing/tests/regression-suite/0225-Moz-OPTIONS-group-principal.test new file mode 100644 index 00000000..73e4a75e --- /dev/null +++ b/testing/tests/regression-suite/0225-Moz-OPTIONS-group-principal.test @@ -0,0 +1,9 @@ +# +# Do an OPTIONS request against the principal-URL of a group we are a member of +# +TYPE=OPTIONS +URL=http://mycaldav/caldav.php/teamclient1/ + +HEADER=User-Agent: DAViCalTester/1.0 + +HEAD diff --git a/testing/tests/regression-suite/0527-iCal-PROPFIND.result b/testing/tests/regression-suite/0527-iCal-PROPFIND.result index 897af6b6..605e9ec4 100644 --- a/testing/tests/regression-suite/0527-iCal-PROPFIND.result +++ b/testing/tests/regression-suite/0527-iCal-PROPFIND.result @@ -1,18 +1,47 @@ -HTTP/1.1 403 Forbidden +HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook -Content-Length: 216 +ETag: "1f0e016ecbd8566bc60b88a167178059" +Content-Length: 1071 Content-Type: text/xml; charset="utf-8" - - - - /caldav.php/resmgr1/ - - - - - - + + + /caldav.php/resmgr1/ + + + + /caldav.php/resource1/calendar-proxy-write/ + /caldav.php/resource2/calendar-proxy-write/ + + + HTTP/1.1 200 OK + + + + /caldav.php/resmgr1/calendar-proxy-read/ + + + + /caldav.php/resource1/calendar-proxy-write/ + /caldav.php/resource2/calendar-proxy-write/ + + + HTTP/1.1 200 OK + + + + /caldav.php/resmgr1/calendar-proxy-write/ + + + + /caldav.php/resource1/calendar-proxy-write/ + /caldav.php/resource2/calendar-proxy-write/ + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/0528-iCal-PROPFIND.result b/testing/tests/regression-suite/0528-iCal-PROPFIND.result index 897af6b6..605e9ec4 100644 --- a/testing/tests/regression-suite/0528-iCal-PROPFIND.result +++ b/testing/tests/regression-suite/0528-iCal-PROPFIND.result @@ -1,18 +1,47 @@ -HTTP/1.1 403 Forbidden +HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook -Content-Length: 216 +ETag: "1f0e016ecbd8566bc60b88a167178059" +Content-Length: 1071 Content-Type: text/xml; charset="utf-8" - - - - /caldav.php/resmgr1/ - - - - - - + + + /caldav.php/resmgr1/ + + + + /caldav.php/resource1/calendar-proxy-write/ + /caldav.php/resource2/calendar-proxy-write/ + + + HTTP/1.1 200 OK + + + + /caldav.php/resmgr1/calendar-proxy-read/ + + + + /caldav.php/resource1/calendar-proxy-write/ + /caldav.php/resource2/calendar-proxy-write/ + + + HTTP/1.1 200 OK + + + + /caldav.php/resmgr1/calendar-proxy-write/ + + + + /caldav.php/resource1/calendar-proxy-write/ + /caldav.php/resource2/calendar-proxy-write/ + + + HTTP/1.1 200 OK + + +