From e0ee11fcf91f9fb797c8cd8b805aaa423ee00503 Mon Sep 17 00:00:00 2001 From: Matt Griswold Date: Tue, 30 Jul 2019 12:43:56 -0500 Subject: [PATCH] Pr 482 534 (#535) * fix oauth redirect if login is required, fix login redirect getting lost on auth failure * fix bad rdap test (#534) --- peeringdb_server/templates/site/login.html | 2 +- peeringdb_server/views.py | 13 +++++++++++-- tests/test_inet.py | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/peeringdb_server/templates/site/login.html b/peeringdb_server/templates/site/login.html index c2222709..8f045e12 100644 --- a/peeringdb_server/templates/site/login.html +++ b/peeringdb_server/templates/site/login.html @@ -10,7 +10,7 @@ {% csrf_token %}
- +
diff --git a/peeringdb_server/views.py b/peeringdb_server/views.py index b03f8206..f1d78354 100644 --- a/peeringdb_server/views.py +++ b/peeringdb_server/views.py @@ -71,6 +71,12 @@ BASE_ENV = { } +def is_oauth_authorize(url): + if url.find("/oauth2/authorize/") == 0: + return True + return False + + def export_permissions(user, entity): """ returns dict of permission bools for the specified user and entity @@ -709,8 +715,10 @@ def view_login(request, errors=None): template = loader.get_template('site/login.html') + redir = request.GET.get("next", request.POST.get("next")) + env = BASE_ENV.copy() - env.update({'errors': errors}) + env.update({'errors': errors, "next": redir}) return HttpResponse(template.render(env, request)) @@ -1598,7 +1606,8 @@ def request_login(request): try: resolve(redir) except Resolver404: - redir = "/" + if not is_oauth_authorize(redir): + redir = "/" user = authenticate(username=username, password=password) if user is not None: diff --git a/tests/test_inet.py b/tests/test_inet.py index 0c2804bd..3cb8b9f9 100644 --- a/tests/test_inet.py +++ b/tests/test_inet.py @@ -43,7 +43,7 @@ def test_recurse_contacts(rdap): asn = rdap.get_asn(3333) assert rdap == asn._rdapc assert len(asn.emails) > 1 - assert len(rdap.history) > len(asn.emails) + assert len(rdap.history) > 1 def test_renumber_ipaddress(): ip4 = renumber_ipaddress(