diff options
| author | Éric Araujo <merwok@netwok.org> | 2020-06-22 16:33:13 -0400 |
|---|---|---|
| committer | Éric Araujo <merwok@netwok.org> | 2020-06-22 16:33:13 -0400 |
| commit | baa59284e1ee26284ecb68d957d5607e40ed786f (patch) | |
| tree | f41bff89b8c65ea4bcdc557a4e1dd4c35ddb4f1c /src | |
| parent | 48a04855ad4f1f1ae6af934090f35a4ad035ed67 (diff) | |
| download | pyramid-baa59284e1ee26284ecb68d957d5607e40ed786f.tar.gz pyramid-baa59284e1ee26284ecb68d957d5607e40ed786f.tar.bz2 pyramid-baa59284e1ee26284ecb68d957d5607e40ed786f.zip | |
first shot for #1602
Diffstat (limited to 'src')
| -rw-r--r-- | src/pyramid/config/routes.py | 7 | ||||
| -rw-r--r-- | src/pyramid/config/views.py | 7 | ||||
| -rw-r--r-- | src/pyramid/interfaces.py | 12 | ||||
| -rw-r--r-- | src/pyramid/predicates.py | 13 | ||||
| -rw-r--r-- | src/pyramid/security.py | 5 |
5 files changed, 44 insertions, 0 deletions
diff --git a/src/pyramid/config/routes.py b/src/pyramid/config/routes.py index a12e18fa8..0fbfcca0c 100644 --- a/src/pyramid/config/routes.py +++ b/src/pyramid/config/routes.py @@ -268,6 +268,12 @@ class RoutesConfiguratorMixin: Removed support for media ranges. + is_authenticated + + XXX doc doc + + .. versionadded:: 2.0 + effective_principals If specified, this value should be a :term:`principal` identifier or @@ -537,6 +543,7 @@ class RoutesConfiguratorMixin: ('request_param', p.RequestParamPredicate), ('header', p.HeaderPredicate), ('accept', p.AcceptPredicate), + ('is_authenticated', p.IsAuthenticatedPredicate), ('effective_principals', p.EffectivePrincipalsPredicate), ('custom', p.CustomPredicate), ('traverse', p.TraversePredicate), diff --git a/src/pyramid/config/views.py b/src/pyramid/config/views.py index a064ebd05..87f2cbcd7 100644 --- a/src/pyramid/config/views.py +++ b/src/pyramid/config/views.py @@ -712,6 +712,12 @@ class ViewsConfiguratorMixin: .. versionadded:: 1.4a3 + is_authenticated + + XXX doc doc + + ..versionadded:: 2.0 + effective_principals If specified, this value should be a :term:`principal` identifier or @@ -1205,6 +1211,7 @@ class ViewsConfiguratorMixin: ('request_type', p.RequestTypePredicate), ('match_param', p.MatchParamPredicate), ('physical_path', p.PhysicalPathPredicate), + ('is_authenticated', p.IsAuthenticatedPredicate), ('effective_principals', p.EffectivePrincipalsPredicate), ('custom', p.CustomPredicate), ): diff --git a/src/pyramid/interfaces.py b/src/pyramid/interfaces.py index e92662f11..85539c2f2 100644 --- a/src/pyramid/interfaces.py +++ b/src/pyramid/interfaces.py @@ -113,6 +113,14 @@ class IResponse(Interface): """ Return a new app_iter built from the response app_iter that serves up only the given start:stop range. """ + authenticated_identity = Attribute( + """XXX Doc doc""" + ) + + authenticated_userid = Attribute( + """XXX Doc doc""" + ) + body = Attribute( """The body of the response, as a str. This will read in the entire app_iter if necessary.""" @@ -233,6 +241,10 @@ class IResponse(Interface): headers = Attribute(""" The headers in a dictionary-like object """) + is_authenticated = Attribute( + """XXX doc doc""" + ) + last_modified = Attribute( """ Gets and sets and deletes the Last-Modified header. For more information on Last-Modified see RFC 2616 section 14.29. Converts diff --git a/src/pyramid/predicates.py b/src/pyramid/predicates.py index 576bbbce6..fe8bc228c 100644 --- a/src/pyramid/predicates.py +++ b/src/pyramid/predicates.py @@ -276,6 +276,19 @@ class PhysicalPathPredicate: return False +class IsAuthenticatedPredicate: + def __init__(self, val, config): + self.val = val + + def text(self): + return "is_authenticated = %r" % (self.val,) + + phash = text + + def __call__(self, context, request): + return request.is_authenticated == self.val + + class EffectivePrincipalsPredicate: def __init__(self, val, config): if is_nonstr_iter(val): diff --git a/src/pyramid/security.py b/src/pyramid/security.py index 58bc72116..356286407 100644 --- a/src/pyramid/security.py +++ b/src/pyramid/security.py @@ -244,6 +244,11 @@ class SecurityAPIMixin: return None return policy.authenticated_userid(self) + @property + def is_authenticated(self): + """Return True if a user is authenticated for this request.""" + return self.authenticated_identity is not None + def has_permission(self, permission, context=None): """ Given a permission and an optional context, returns an instance of :data:`pyramid.security.Allowed` if the permission is granted to this |
