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())