JourneyJoker/localauth/views.py
2021-10-28 09:26:17 +02:00

60 lines
No EOL
2 KiB
Python

from django.contrib.auth.views import LoginView as Login, LogoutView as Logout
from django.http.response import HttpResponseRedirect
from django.contrib.auth import login
from django.shortcuts import resolve_url
from django.conf import settings
from django.views.generic import FormView
from django.contrib import messages
from django.utils.translation import gettext_lazy as _
from .forms import RegistrationForm, VerificationForm
from .models import User
from .mixins import SuperUserRequiredMixin
from frontend.mixins import TitleMixin
from clients.models import ClientProfile
from partners.models import PartnerProfile
from mail.views import MailView
class LoginView(TitleMixin, Login):
title = _("Login")
template_name = "localauth/login.html"
class LogoutView(Logout):
next_page = "/"
class RegistrationView(TitleMixin, Login):
title = _("Registrieren")
form_class = RegistrationForm
template_name = "localauth/register.html"
def form_valid(self, form):
user = User.objects.create_user(form.cleaned_data["email"])
user.set_password(form.cleaned_data["password1"])
user.save()
login(self.request, user)
messages.success(self.request, _("Erfolgreich registriert!"))
return HttpResponseRedirect(self.get_success_url())
def get_default_redirect_url(self):
return resolve_url(self.next_page or settings.REGISTER_REDIRECT_URL)
class VerificationView(SuperUserRequiredMixin, FormView):
form_class = VerificationForm
template_name = "localauth/verify.html"
def form_valid(self, form):
pid = form.cleaned_data["profile"]
ptype = ClientProfile if profile.startswith("C") else PartnerProfile
pobj = ptype.objects.get(id=profile[1:])
pobj.update(verified=True)
messages.success(self.request, _("Benutzer %s bestätigt!") % pobj.full_name)
return HttpResponseRedirect(resolve_url("localauth:verify"))
class EmailVerificationMailView(MailView):
template_name = "localauth/mail/verify.html"