Fix URI mismatch
This commit is contained in:
parent
6cbf5487fc
commit
8409f36dd1
@ -41,10 +41,12 @@ def hopid_callback(response=None):
|
|||||||
return view_func(request, *args, **kwargs, error=reason)
|
return view_func(request, *args, **kwargs, error=reason)
|
||||||
|
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
|
next = request.GET.get('next')
|
||||||
|
|
||||||
if not code:
|
if not code:
|
||||||
return fail("No code returned")
|
return fail("No code returned")
|
||||||
|
|
||||||
tokens = get_jwt_tokens(code, request.session.pop('pkce_verifier', ''))
|
tokens = get_jwt_tokens(code, request.session.pop('pkce_verifier', ''), next)
|
||||||
error = tokens.get('error', '')
|
error = tokens.get('error', '')
|
||||||
|
|
||||||
if error:
|
if error:
|
||||||
|
@ -61,12 +61,17 @@ def get_user_from_token(access_token):
|
|||||||
return profile
|
return profile
|
||||||
|
|
||||||
|
|
||||||
def get_jwt_tokens(code, code_verifier):
|
def get_jwt_tokens(code, code_verifier, next=None):
|
||||||
token_url = f"{settings.HOPID_URL}/o/token/"
|
token_url = f"{settings.HOPID_URL}/o/token/"
|
||||||
|
redirect_uri = settings.HOPID_CLIENT_CALLBACK_URI or settings.HOPID_CLIENT_URI + f'/id/callback/'
|
||||||
|
|
||||||
|
if next:
|
||||||
|
redirect_uri += f'?{urlencode({"next": next})}'
|
||||||
|
|
||||||
token_data = {
|
token_data = {
|
||||||
'grant_type': 'authorization_code',
|
'grant_type': 'authorization_code',
|
||||||
'code': code,
|
'code': code,
|
||||||
'redirect_uri': settings.HOPID_CLIENT_CALLBACK_URI or settings.HOPID_CLIENT_URI + '/id/callback/',
|
'redirect_uri': redirect_uri,
|
||||||
'client_id': settings.HOPID_CLIENT_ID,
|
'client_id': settings.HOPID_CLIENT_ID,
|
||||||
'client_secret': settings.HOPID_CLIENT_SECRET,
|
'client_secret': settings.HOPID_CLIENT_SECRET,
|
||||||
'code_verifier': code_verifier,
|
'code_verifier': code_verifier,
|
||||||
|
@ -4,6 +4,7 @@ from django.contrib.auth import logout as django_logout
|
|||||||
from .utils import get_hopid_logout_url
|
from .utils import get_hopid_logout_url
|
||||||
from .decorators import hopid_callback
|
from .decorators import hopid_callback
|
||||||
|
|
||||||
|
|
||||||
@hopid_callback()
|
@hopid_callback()
|
||||||
def hopid_callback_view(request, *args, **kwargs):
|
def hopid_callback_view(request, *args, **kwargs):
|
||||||
next = request.GET.get('next') or '/'
|
next = request.GET.get('next') or '/'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user