summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTheron Luhn <theron@luhn.com>2019-12-14 20:17:36 -0800
committerTheron Luhn <theron@luhn.com>2019-12-14 20:17:36 -0800
commit2e06fa414412688dc3b7e0b422b0fc0b96ec882f (patch)
tree8acfecec6dd36eb8ed0763a93a7674ebc7fc140a /src
parentcd0b92d10bfbb38068c216ce44dde9732fa127a8 (diff)
downloadpyramid-2e06fa414412688dc3b7e0b422b0fc0b96ec882f.tar.gz
pyramid-2e06fa414412688dc3b7e0b422b0fc0b96ec882f.tar.bz2
pyramid-2e06fa414412688dc3b7e0b422b0fc0b96ec882f.zip
Bring back identity into permits.
Diffstat (limited to 'src')
-rw-r--r--src/pyramid/interfaces.py2
-rw-r--r--src/pyramid/security.py6
-rw-r--r--src/pyramid/testing.py2
-rw-r--r--src/pyramid/viewderivers.py9
4 files changed, 12 insertions, 7 deletions
diff --git a/src/pyramid/interfaces.py b/src/pyramid/interfaces.py
index 891b851ee..d20401028 100644
--- a/src/pyramid/interfaces.py
+++ b/src/pyramid/interfaces.py
@@ -494,7 +494,7 @@ class ISecurityPolicy(Interface):
verified user, or ``None`` if unauthenticated.
"""
- def permits(request, context, permission):
+ def permits(request, context, identity, permission):
""" Return an instance of :class:`pyramid.security.Allowed` if a user
of the given identity is allowed the ``permission`` in the current
``context``, else return an instance of
diff --git a/src/pyramid/security.py b/src/pyramid/security.py
index e3a978c52..d6af69e51 100644
--- a/src/pyramid/security.py
+++ b/src/pyramid/security.py
@@ -351,7 +351,9 @@ class SecurityAPIMixin:
policy = _get_security_policy(self)
if policy is None:
return Allowed('No security policy in use.')
- return policy.permits(self, context, permission)
+ return policy.permits(
+ self, context, self.authenticated_identity, permission
+ )
class AuthenticationAPIMixin(object):
@@ -447,7 +449,7 @@ class LegacySecurityPolicy:
authn = self._get_authn_policy(request)
return authn.forget(request)
- def permits(self, request, context, permission):
+ def permits(self, request, context, identity, permission):
authn = self._get_authn_policy(request)
authz = self._get_authz_policy(request)
principals = authn.effective_principals(request)
diff --git a/src/pyramid/testing.py b/src/pyramid/testing.py
index a92bb5d03..f550156dd 100644
--- a/src/pyramid/testing.py
+++ b/src/pyramid/testing.py
@@ -64,7 +64,7 @@ class DummySecurityPolicy(object):
def authenticated_userid(self, request):
return self.userid
- def permits(self, request, context, permission):
+ def permits(self, request, context, identity, permission):
return self.permissive
def remember(self, request, userid, **kw):
diff --git a/src/pyramid/viewderivers.py b/src/pyramid/viewderivers.py
index 7c28cbf85..35f9a08d2 100644
--- a/src/pyramid/viewderivers.py
+++ b/src/pyramid/viewderivers.py
@@ -316,7 +316,8 @@ def _secured_view(view, info):
if policy and (permission is not None):
def permitted(context, request):
- return policy.permits(request, context, permission)
+ identity = policy.identify(request)
+ return policy.permits(request, context, identity, permission)
def secured_view(context, request):
result = permitted(context, request)
@@ -362,8 +363,10 @@ def _authdebug_view(view, info):
elif permission is None:
msg = 'Allowed (no permission registered)'
else:
- result = policy.permits(request, context, permission)
- msg = str(result)
+ identity = policy.identify(request)
+ msg = str(
+ policy.permits(request, context, identity, permission)
+ )
else:
msg = 'Allowed (no security policy in use)'