From 805a09b2e15638d664c9742b0fbd655b1767272c Mon Sep 17 00:00:00 2001 From: Ivan Nikolskiy Date: Wed, 9 Jul 2025 13:36:19 +0200 Subject: [PATCH] Add next for login --- django_hopid/templatetags/hopid_tags.py | 8 ++++---- django_hopid/utils.py | 8 ++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/django_hopid/templatetags/hopid_tags.py b/django_hopid/templatetags/hopid_tags.py index 7def720..61680c9 100644 --- a/django_hopid/templatetags/hopid_tags.py +++ b/django_hopid/templatetags/hopid_tags.py @@ -30,14 +30,14 @@ register = template.Library() @register.simple_tag(takes_context=True) -def hopid_login_url(context, method=None): +def hopid_login_url(context, *args, **kwargs): request = context['request'] - return get_hopid_login_url(request, method) + return get_hopid_login_url(request, *args, **kwargs) @register.simple_tag(takes_context=True) -def hopid_login_button(context, method=None): +def hopid_login_button(context, *args, **kwargs): request = context['request'] - url = get_hopid_login_url(request, method) + url = get_hopid_login_url(request, *args, **kwargs) return render_to_string('django_hopid/hopid_login_button.html', {'url': url}) diff --git a/django_hopid/utils.py b/django_hopid/utils.py index b3122bb..59d9474 100644 --- a/django_hopid/utils.py +++ b/django_hopid/utils.py @@ -92,7 +92,7 @@ def generate_pkce_pair(): return verifier, challenge -def get_hopid_login_url(request, method=None): +def get_hopid_login_url(request, method=None, next=None): nonce = secrets.token_urlsafe(32) verifier, challenge = generate_pkce_pair() @@ -101,11 +101,15 @@ def get_hopid_login_url(request, method=None): base = f"{settings.HOPID_URL}/o/authorize/" + redirect_uri = settings.HOPID_CLIENT_CALLBACK_URI or settings.HOPID_CLIENT_URI + f'/id/callback/' + if next: + redirect_uri += f'?{urlencode({"next": next})}' + params = { "client_id": settings.HOPID_CLIENT_ID, "response_type": "code", "scope": "openid profile email", - "redirect_uri": settings.HOPID_CLIENT_CALLBACK_URI or settings.HOPID_CLIENT_URI + '/id/callback/', + "redirect_uri": redirect_uri, "nonce": nonce, "code_challenge": challenge, "code_challenge_method": "S256"