aboutsummaryrefslogtreecommitdiff
path: root/gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-04-20 21:11:26 +0300
committerFrederick Muriuki Muriithi2024-04-20 21:11:26 +0300
commit115d98a1022dc57fee5895ac335c4aca9f7acdf5 (patch)
tree2367f991b4e44003ba8869c6ff5ae71ecb096902 /gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py
parente431a4a7c27f20564666cae0751da68271a444ba (diff)
downloadgn-auth-115d98a1022dc57fee5895ac335c4aca9f7acdf5.tar.gz
Separate authentication from token generation
Authenticate with the usual authentication code flow. Do not inherit AuthenticationCodeGrant in JWTBearerGrant, instead, use the JWTBearerGrant to generate the token after the user has already been successfully authenticated.
Diffstat (limited to 'gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py')
-rw-r--r--gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py b/gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py
index 02a876b..ae604df 100644
--- a/gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py
+++ b/gn_auth/auth/authentication/oauth2/grants/authorisation_code_grant.py
@@ -26,6 +26,17 @@ class AuthorisationCodeGrant(grants.AuthorizationCodeGrant):
GRANT_TYPE = "authorization_code"
RESPONSE_TYPES = {'code'}
+ def create_authorization_response(self, redirect: str, grant_user):
+ """Add some data to the URI"""
+ response = super().create_authorization_response(redirect, grant_user)
+ headers = dict(response[-1])
+ headers = {
+ **headers,
+ "Location": f"{headers['Location']}&user_id={grant_user.user_id}"
+ }
+ return (response[0], response[1], [
+ (header, value) for header, value in headers.items()])
+
def save_authorization_code(self, code, request):
"""Persist the authorisation code to database."""
client = request.client