26 |
26 |
|
27 |
27 |
import django.http
|
28 |
28 |
from django.views.generic import View
|
29 |
|
from django.http import HttpResponseRedirect, HttpResponse
|
|
29 |
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden
|
30 |
30 |
from django.contrib import auth
|
31 |
31 |
from django.contrib.auth import get_user_model
|
32 |
32 |
from django.conf import settings
|
... | ... | |
142 |
142 |
|
143 |
143 |
|
144 |
144 |
class LoginView(ProfileMixin, LogMixin, View):
|
|
145 |
allow_redirect_to_debug = True
|
|
146 |
|
|
147 |
def dispatch(self, request, *args, **kwargs):
|
|
148 |
if request.user.is_superuser and request.session.get('mellon_debug_login') and self.allow_redirect_to_debug:
|
|
149 |
url = reverse('mellon_debug_login')
|
|
150 |
url = "%s?%s" % (url, request.META.get('QUERY_STRING', ''))
|
|
151 |
if request.method == 'POST':
|
|
152 |
url += '&' + request.POST.urlencode()
|
|
153 |
return HttpResponseRedirect(url)
|
|
154 |
return super().dispatch(request, *args, **kwargs)
|
|
155 |
|
145 |
156 |
@property
|
146 |
157 |
def template_base(self):
|
147 |
158 |
return self.kwargs.get('template_base', 'base.html')
|
... | ... | |
719 |
730 |
def metadata(request, **kwargs):
|
720 |
731 |
metadata = utils.create_metadata(request)
|
721 |
732 |
return HttpResponse(metadata, content_type='text/xml')
|
|
733 |
|
|
734 |
|
|
735 |
class DebugLoginView(LoginView):
|
|
736 |
allow_redirect_to_debug = False
|
|
737 |
|
|
738 |
def dispatch(self, request, *args, **kwargs):
|
|
739 |
if not request.user.is_superuser:
|
|
740 |
return HttpResponseForbidden()
|
|
741 |
request.session['mellon_debug_login'] = True
|
|
742 |
return super().dispatch(request, *args, **kwargs)
|
|
743 |
|
|
744 |
def authenticate(self, request, login, attributes):
|
|
745 |
return self.render(request, 'mellon/debug_login.html', {'login': login, 'attributes': attributes})
|
|
746 |
|
|
747 |
|
|
748 |
debug_login = csrf_exempt(DebugLoginView.as_view())
|
722 |
|
-
|