From bf1864f324e5984bfb9014562ca2c44fdd2afe08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 2 Apr 2020 21:50:13 +0200 Subject: [PATCH] misc: use new login class based view (#41286) --- welco/views.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/welco/views.py b/welco/views.py index b8d7ae5..7fc6f95 100644 --- a/welco/views.py +++ b/welco/views.py @@ -47,13 +47,23 @@ from .contacts.views import HomeZone as ContactsHomeZone from .forms import QualificationForm -def login(request, *args, **kwargs): - if any(get_idps()): - if not 'next' in request.GET: - return HttpResponseRedirect(resolve_url('mellon_login')) - return HttpResponseRedirect(resolve_url('mellon_login') + '?next=' - + quote(request.GET.get('next'))) - return auth_views.login(request, template_name='welco/login.html') +class LoginView(auth_views.LoginView): + template_name = 'welco/login.html' + + def dispatch(self, request, *args, **kwargs): + if any(get_idps()): + if 'next' not in request.GET: + return HttpResponseRedirect(resolve_url('mellon_login')) + try: + quoted_next_url = quote(request.GET.get('next')) + except KeyError: + return HttpResponseBadRequest('invalid value for "next" parameter') + return HttpResponseRedirect(resolve_url('mellon_login') + '?next=' + quoted_next_url) + return super(LoginView, self).dispatch(request, *args, **kwargs) + + +login = LoginView.as_view() + def logout(request, next_page=None): if any(get_idps()):