Skip to content

Commit 746af6b

Browse files
committed
add context to identity
1 parent 13e2555 commit 746af6b

7 files changed

+15
-15
lines changed

aiohttp_security/abc.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class AbstractIdentityPolicy(metaclass=abc.ABCMeta):
88

99
@abc.abstractmethod
10-
async def identify(self, request):
10+
async def identify(self, request, context=None):
1111
"""Return the claimed identity of the user associated request or
1212
``None`` if no identity can be found associated with the request."""
1313
pass
@@ -42,7 +42,7 @@ async def permits(self, identity, permission, context=None):
4242
pass
4343

4444
@abc.abstractmethod
45-
async def authorized_userid(self, identity):
45+
async def authorized_userid(self, identity, context=None):
4646
"""Retrieve authorized user id.
4747
4848
Return the user_id of the user identified by the identity

aiohttp_security/api.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,15 @@ async def forget(request, response):
4949
await identity_policy.forget(request, response)
5050

5151

52-
async def authorized_userid(request):
52+
async def authorized_userid(request, context=None):
5353
identity_policy = request.app.get(IDENTITY_KEY)
5454
autz_policy = request.app.get(AUTZ_KEY)
5555
if identity_policy is None or autz_policy is None:
5656
return None
57-
identity = await identity_policy.identify(request)
57+
identity = await identity_policy.identify(request, context)
5858
if identity is None:
5959
return None # non-registered user has None user_id
60-
user_id = await autz_policy.authorized_userid(identity)
60+
user_id = await autz_policy.authorized_userid(identity, context)
6161
return user_id
6262

6363

@@ -92,7 +92,7 @@ async def permits(request, permission, context=None):
9292
return access
9393

9494

95-
async def is_anonymous(request):
95+
async def is_anonymous(request, context=None):
9696
"""Check if user is anonymous.
9797
9898
User is considered anonymous if there is not identity
@@ -101,16 +101,16 @@ async def is_anonymous(request):
101101
identity_policy = request.app.get(IDENTITY_KEY)
102102
if identity_policy is None:
103103
return True
104-
identity = await identity_policy.identify(request)
104+
identity = await identity_policy.identify(request, context)
105105
if identity is None:
106106
return True
107107
return False
108108

109109

110-
async def check_authorized(request):
110+
async def check_authorized(request, context=None):
111111
"""Checker that raises HTTPUnauthorized for anonymous users.
112112
"""
113-
userid = await authorized_userid(request)
113+
userid = await authorized_userid(request, context)
114114
if userid is None:
115115
raise web.HTTPUnauthorized()
116116
return userid
@@ -152,7 +152,7 @@ async def check_permission(request, permission, context=None):
152152
raises HTTPForbidden.
153153
"""
154154

155-
await check_authorized(request)
155+
await check_authorized(request, context)
156156
allowed = await permits(request, permission, context)
157157
if not allowed:
158158
raise web.HTTPForbidden()

aiohttp_security/cookies_identity.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def __init__(self):
1717
self._cookie_name = 'AIOHTTP_SECURITY'
1818
self._max_age = 30 * 24 * 3600
1919

20-
async def identify(self, request):
20+
async def identify(self, request, context=None):
2121
identity = request.cookies.get(self._cookie_name)
2222
return identity
2323

aiohttp_security/jwt_identity.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def __init__(self, secret, algorithm='HS256'):
2121
self.secret = secret
2222
self.algorithm = algorithm
2323

24-
async def identify(self, request):
24+
async def identify(self, request, context=None):
2525
header_identity = request.headers.get(AUTH_HEADER_NAME)
2626

2727
if header_identity is None:

aiohttp_security/session_identity.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __init__(self, session_key='AIOHTTP_SECURITY'):
2323
raise ImportError(
2424
'SessionIdentityPolicy requires `aiohttp_session`')
2525

26-
async def identify(self, request):
26+
async def identify(self, request, context=None):
2727
session = await get_session(request)
2828
return session.get(self._session_key)
2929

tests/test_dict_autz.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ async def permits(self, identity, permission, context=None):
1818
else:
1919
return False
2020

21-
async def authorized_userid(self, identity):
21+
async def authorized_userid(self, identity, context=None):
2222
if identity == 'UserID':
2323
return 'Andrew'
2424
else:

tests/test_jwt_identity.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Autz(AbstractAuthorizationPolicy):
2525
async def permits(self, identity, permission, context=None):
2626
pass
2727

28-
async def authorized_userid(self, identity):
28+
async def authorized_userid(self, identity, context=None):
2929
pass
3030

3131

0 commit comments

Comments
 (0)