auth stuff.

This commit is contained in:
2018-01-18 23:02:03 +01:00
parent 8418dcfa91
commit aa19dc9347
7 changed files with 158 additions and 9 deletions

View File

@@ -1,10 +1,12 @@
import logging
import os
from django.contrib.auth import login
from django.contrib.auth import login, views as auth_views
from django.contrib.auth.decorators import login_required
from django.core.exceptions import SuspiciousOperation
from django.http import HttpResponseRedirect
from django.urls import reverse, reverse_lazy
from django.utils.decorators import method_decorator
from django.views import generic
from . import forms
@@ -21,6 +23,26 @@ class ImprintView(generic.TemplateView):
template_name = 'dav_events/imprint.html'
class LoginView(auth_views.LoginView):
form_class = forms.LoginForm
next_page = reverse_lazy('dav_events:event_list')
template_name = 'dav_events/auth/login_form.html'
def get_success_url(self):
url = self.get_redirect_url()
return url or self.next_page
class LogoutView(auth_views.LogoutView):
next_page = reverse_lazy('dav_events:home')
class SetPasswordView(auth_views.PasswordChangeView):
form_class = forms.SetPasswordForm
template_name = 'dav_events/auth/set_password_form.html'
success_url = reverse_lazy('dav_events:event_list')
class EventListView(generic.ListView):
model = models.Event
queryset = models.Event.objects.all()
@@ -90,15 +112,13 @@ class EventCreateView(generic.FormView):
event.save()
owner = event.owner
self.clean_session_data()
if self.request.user.is_authenticated():
if self.request.user.is_authenticated:
next_url = reverse('dav_events:event_list')
elif owner.has_usable_password():
next_url = reverse('dav_events:event_list')
else:
# owner has no usable password, so he must be new.
# let him set his password.
login(self.request, owner)
next_url = reverse('dav_events:home')
next_url = reverse('dav_events:set_password', kwargs={'pk': owner.pk})
return HttpResponseRedirect(next_url)
def clean_session_data(self, session=None):