From f59a7cd3b0f4d65e11d669f627a580e220d28bd2 Mon Sep 17 00:00:00 2001 From: Ivan Nikolskiy Date: Sat, 19 Jul 2025 20:31:09 +0200 Subject: [PATCH] Added login API --- README.md | 1 + django_hopid/urls.py | 7 ++++++- django_hopid/views.py | 8 +++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b2e38f..f9cacf6 100755 --- a/README.md +++ b/README.md @@ -96,6 +96,7 @@ This provides: * `/id/callback/` for OIDC callback * `/id/logout/` for logout +* `/id/login/` for login (accepts GET parameters: `next` - redirect to after login, `method` - can be `email` or `student_id`) ### 2. (Alternative) Use the callback decorator diff --git a/django_hopid/urls.py b/django_hopid/urls.py index f8b1614..353f7ba 100644 --- a/django_hopid/urls.py +++ b/django_hopid/urls.py @@ -1,9 +1,14 @@ from django.urls import path -from django_hopid.views import hopid_logout_view, hopid_callback_view +from django_hopid.views import ( + hopid_logout_view, + hopid_login_view, + hopid_callback_view +) app_name = "django_hopid" urlpatterns = [ path("callback/", hopid_callback_view, name="callback"), path("logout/", hopid_logout_view, name="logout"), + path("login/", hopid_login_view, name="login"), ] \ No newline at end of file diff --git a/django_hopid/views.py b/django_hopid/views.py index c26e513..7817b1c 100644 --- a/django_hopid/views.py +++ b/django_hopid/views.py @@ -1,7 +1,7 @@ from django.shortcuts import redirect from django.contrib.auth import logout as django_logout -from .utils import get_hopid_logout_url +from .utils import get_hopid_logout_url, get_hopid_login_url from .decorators import hopid_callback @hopid_callback() @@ -9,6 +9,12 @@ def hopid_callback_view(request, *args, **kwargs): next = request.GET.get('next') or '/' return redirect(next) +def hopid_login_view(request): + next = request.GET.get('next') or None + method = request.GET.get('method') or None + + return redirect(get_hopid_login_url(request, method, next)) + def hopid_logout_view(request): django_logout(request) return redirect(get_hopid_logout_url())