Merge pull request #100 from chripo/fix-access

Fix access
This commit is contained in:
Guillaume Ayoub 2014-02-05 12:47:43 +01:00
commit c953211175

View File

@ -264,9 +264,6 @@ class Application(object):
path = environ["PATH_INFO"]
# Find collection(s)
items = ical.Collection.from_path(path, environ.get("HTTP_DEPTH", "0"))
# Get function corresponding to method
function = getattr(self, environ["REQUEST_METHOD"].lower())
@ -280,17 +277,21 @@ class Application(object):
else:
user = password = None
read_allowed_items, write_allowed_items = \
self.collect_allowed_items(items, user)
is_authenticated = auth.is_authenticated(user, password)
is_valid_user = is_authenticated or not user
if ((read_allowed_items or write_allowed_items)
and (not user or is_authenticated)) or \
(is_authenticated and function == self.propfind) or \
function == self.options or not items:
# Collections found, or authenticated PROPFIND request,
# or OPTIONS request, or no items at all
if is_valid_user:
items = ical.Collection.from_path(path,
environ.get("HTTP_DEPTH", "0"))
read_allowed_items, write_allowed_items = \
self.collect_allowed_items(items, user)
else:
read_allowed_items, write_allowed_items = None, None
if is_valid_user and (
(read_allowed_items or write_allowed_items) or
(is_authenticated and function == self.propfind) or
function == self.options):
status, headers, answer = function(
environ, read_allowed_items, write_allowed_items, content,
user)