0001-views-allow-passing-arbitrary-GET-params-to-mellon.patch
chrono/views.py | ||
---|---|---|
19 | 19 |
from django.contrib.auth import views as auth_views |
20 | 20 |
from django.http import HttpResponseRedirect |
21 | 21 |
from django.shortcuts import resolve_url |
22 |
from django.utils.six.moves.urllib.parse import quote |
|
22 |
from django.utils.six.moves.urllib.parse import quote, urlparse, urlunparse
|
|
23 | 23 | |
24 | 24 |
if 'mellon' in settings.INSTALLED_APPS: |
25 | 25 |
from mellon.utils import get_idps |
... | ... | |
29 | 29 | |
30 | 30 |
def login(request, *args, **kwargs): |
31 | 31 |
if any(get_idps()): |
32 |
if not 'next' in request.GET: |
|
33 |
return HttpResponseRedirect(resolve_url('mellon_login')) |
|
34 |
return HttpResponseRedirect(resolve_url('mellon_login') + '?next=' |
|
35 |
+ quote(request.GET.get('next'))) |
|
32 |
mellon_url = resolve_url('mellon_login') |
|
33 |
mellon_url_parts = urlparse(mellon_url) |
|
34 |
mellon_url_parts = mellon_url_parts._replace( |
|
35 |
query=request.GET.urlencode(safe='/')) |
|
36 |
return HttpResponseRedirect(urlunparse(mellon_url_parts)) |
|
36 | 37 |
return auth_views.login(request, *args, **kwargs) |
37 | 38 | |
38 | 39 |
def logout(request, next_page=None): |
39 |
- |