summaryrefslogtreecommitdiff
path: root/repoze/bfg/security.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-11-02 22:14:58 +0000
committerChris McDonough <chrism@agendaless.com>2008-11-02 22:14:58 +0000
commit389ac52e76f64da5bdf87acd19aa1b2fb5cf664b (patch)
treedde685da2bda59ba063cff2751cdf913571f1cea /repoze/bfg/security.py
parentabe447ecb25bd385cafcdedeae0ee31007283569 (diff)
downloadpyramid-389ac52e76f64da5bdf87acd19aa1b2fb5cf664b.tar.gz
pyramid-389ac52e76f64da5bdf87acd19aa1b2fb5cf664b.tar.bz2
pyramid-389ac52e76f64da5bdf87acd19aa1b2fb5cf664b.zip
- Fix bug where default deny in authorization check would throw a
TypeError (use ``ACLDenied`` instead of ``Denied``).
Diffstat (limited to 'repoze/bfg/security.py')
-rw-r--r--repoze/bfg/security.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/repoze/bfg/security.py b/repoze/bfg/security.py
index 21b7f98d3..860f4a0fd 100644
--- a/repoze/bfg/security.py
+++ b/repoze/bfg/security.py
@@ -24,7 +24,7 @@ def has_permission(permission, context, request):
application."""
policy = queryUtility(ISecurityPolicy)
if policy is None:
- return True
+ return Allowed('No security policy in use.')
return policy.permits(context, request, permission)
def authenticated_userid(request):
@@ -85,7 +85,8 @@ class ACLAuthorizer(object):
else:
return ACLDenied(ace, acl, permission, principals,
self.context)
- # default deny
+
+ # default deny if no ACE matches in the ACL found
result = ACLDenied(None, acl, permission, principals, self.context)
return result
@@ -104,11 +105,11 @@ class ACLSecurityPolicy(object):
authorizer = self.authorizer_factory(location)
try:
return authorizer.permits(permission, *principals)
-
except NoAuthorizationInformation:
continue
- return Denied(None, None, permission, principals, self.context)
+ # default deny if no ACL in lineage at all
+ return ACLDenied(None, None, permission, principals, context)
def authenticated_userid(self, request):
principals = self.get_principals(request)