From 2c87e79aafd1783ffc952acb1146f36ed2150ae1 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Thu, 27 Jun 2019 09:32:09 -0500
Subject: [PATCH] ligoauth: rework logout view

---
 config/urls.py                     |  8 +++++---
 gracedb/ligoauth/views.py          | 16 +---------------
 gracedb/templates/navbar_frag.html |  2 +-
 3 files changed, 7 insertions(+), 19 deletions(-)

diff --git a/config/urls.py b/config/urls.py
index f27165927..427be8672 100644
--- a/config/urls.py
+++ b/config/urls.py
@@ -2,7 +2,7 @@ from django.conf import settings
 from django.conf.urls import url, include
 
 from django.contrib import admin
-from django.contrib.auth.views import logout
+from django.contrib.auth.views import LogoutView
 from django.views.generic import TemplateView
 
 # Import feeds
@@ -10,7 +10,9 @@ import core.views
 from events.feeds import EventFeed, feedview
 import events.reports
 import events.views
-from ligoauth.views import pre_login, post_login, shib_logout, manage_password
+from ligoauth.views import (
+    pre_login, post_login, manage_password
+)
 import search.views
 
 # Django admin auto-discover
@@ -51,7 +53,7 @@ urlpatterns = [
     # Authentication
     url(r'^login/$', pre_login, name='login'),
     url(r'^post-login/$', post_login, name='post-login'),
-    url(r'^logout/$', shib_logout, name='logout'),
+    url(r'^logout/$', LogoutView.as_view(), name='logout'),
 
     # Password management
     url('^manage-password/$', manage_password, name='manage-password'),
diff --git a/gracedb/ligoauth/views.py b/gracedb/ligoauth/views.py
index 9d6084a35..8e5870320 100644
--- a/gracedb/ligoauth/views.py
+++ b/gracedb/ligoauth/views.py
@@ -1,9 +1,7 @@
 import logging
 
 from django.conf import settings
-from django.contrib.auth import (
-    logout, get_user_model, update_session_auth_hash,
-)
+from django.contrib.auth import get_user_model, update_session_auth_hash
 from django.http import HttpResponseRedirect, HttpResponseForbidden
 from django.shortcuts import resolve_url, render
 from django.urls import reverse
@@ -84,18 +82,6 @@ def post_login(request):
     return HttpResponseRedirect(original_url)
 
 
-def shib_logout(request):
-
-    # Call Django logout function
-    logout(request)
-
-    # Get original url where the logout button was pressed from
-    original_url = request.META.get('HTTP_REFERER',
-        resolve_url(settings.LOGOUT_REDIRECT_URL))
-
-    return HttpResponseRedirect(original_url)
-
-
 @lvem_observers_only(superuser_allowed=True)
 def manage_password(request):
     # Set up context dictionary
diff --git a/gracedb/templates/navbar_frag.html b/gracedb/templates/navbar_frag.html
index 1a1ae9e3c..d7dd5855e 100644
--- a/gracedb/templates/navbar_frag.html
+++ b/gracedb/templates/navbar_frag.html
@@ -20,7 +20,7 @@
         <li id="nav-other"><a href="{% url "other" %}">Other</a></li>
     {% endif %}
     {% if user.is_authenticated %}
-        <li id="nav-logout"><a href="{% url "logout" %}">Logout</a></li>
+        <li id="nav-logout"><a href="{% url "logout" %}?next={{ request.path }}">Logout</a></li>
         <li id="nav-user">Authenticated as:
         {% if user.first_name %}
             {{ user.get_full_name }}
-- 
GitLab