Fix URI mismatch

This commit is contained in:
Ivan Nikolskiy 2025-07-09 15:55:02 +02:00
parent 6cbf5487fc
commit 8409f36dd1
3 changed files with 11 additions and 3 deletions

View File

@ -41,10 +41,12 @@ def hopid_callback(response=None):
return view_func(request, *args, **kwargs, error=reason)
code = request.GET.get('code')
next = request.GET.get('next')
if not code:
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', '')
if error:

View File

@ -61,12 +61,17 @@ def get_user_from_token(access_token):
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/"
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 = {
'grant_type': 'authorization_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_secret': settings.HOPID_CLIENT_SECRET,
'code_verifier': code_verifier,

View File

@ -4,6 +4,7 @@ from django.contrib.auth import logout as django_logout
from .utils import get_hopid_logout_url
from .decorators import hopid_callback
@hopid_callback()
def hopid_callback_view(request, *args, **kwargs):
next = request.GET.get('next') or '/'