diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-07-07 17:45:51 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-07-07 17:51:04 +0200 | 
| commit | 939bb82df4a993502d39bfb852b348547746cafa (patch) | |
| tree | 324e5c416b8fa34d82012a4f74e28bac2cb132f2 /ishtar_common/views.py | |
| parent | 1c299abec0ed2a562572ee2c4bdaf85d0c451148 (diff) | |
| download | Ishtar-939bb82df4a993502d39bfb852b348547746cafa.tar.bz2 Ishtar-939bb82df4a993502d39bfb852b348547746cafa.zip  | |
✨ enable password recovering by email
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 42 | 
1 files changed, 33 insertions, 9 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 38fd80689..2a60bfd6a 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -38,10 +38,7 @@ from django.conf import settings  from django.contrib import messages  from django.contrib.auth import logout  from django.contrib.auth.decorators import login_required -from django.contrib.auth.views import redirect_to_login, LoginView as AuthLoginView, \ -    PasswordChangeView as AuthPasswordChangeView, \ -    PasswordResetConfirmView as AuthPasswordResetConfirmView, \ -    LogoutView as AuthLogoutView +from django.contrib.auth import views as auth_view  from django.contrib.contenttypes.models import ContentType  from django.core.exceptions import ObjectDoesNotExist  from django.core.cache import cache @@ -179,7 +176,7 @@ def index(request):          return render(request, "index.html", dct) -class LoginView(AuthLoginView): +class LoginView(auth_view.LoginView):      form_class = forms.AuthenticationForm      def get_context_data(self, **kwargs): @@ -188,7 +185,7 @@ class LoginView(AuthLoginView):          return context -class LogoutView(AuthLogoutView): +class LogoutView(auth_view.LogoutView):      def get(self, request, *args, **kwargs):          # clear cache          keys = [] @@ -210,7 +207,7 @@ def update_password_last_update(user):      cache.set(key, False, settings.CACHE_TIMEOUT) -class PasswordChangeView(AuthPasswordChangeView): +class PasswordChangeView(auth_view.PasswordChangeView):      form_class = forms.PasswordChangeForm      success_url = reverse_lazy('start')      template_name = 'registration/form.html' @@ -227,10 +224,19 @@ class PasswordChangeView(AuthPasswordChangeView):          return context -class PasswordResetConfirmView(AuthPasswordResetConfirmView): +class PasswordResetConfirmView(auth_view.PasswordResetConfirmView): +    form_class = forms.SetPasswordForm +    success_url = reverse_lazy('login') + +    def get_context_data(self, **kwargs): +        context = super().get_context_data(**kwargs) +        context["page_title"] = _("Password reset") +        return context +      def form_valid(self, form):          returned = super().form_valid(form)          update_password_last_update(form.user) +        messages.add_message(self.request, messages.INFO, _("Password changed"))          return returned @@ -247,6 +253,24 @@ class RegistrationView(registration_views.RegistrationView):          raise NotImplementedError +class PasswordResetView(auth_view.PasswordResetView): +    template_name = 'registration/form.html' +    success_url = reverse_lazy('start') + +    def get_context_data(self, **kwargs): +        context = super().get_context_data(**kwargs) +        context["page_title"] = _("Reset password") +        return context + +    def form_valid(self, form): +        returned = super().form_valid(form) +        messages.add_message( +            self.request, messages.INFO, +            _("Email with password reset instructions has been sent.") +        ) +        return returned + +  person_search_wizard = wizards.PersonSearch.as_view(      [("general-person_search", forms.PersonFormSelection)],      label=_("Person search"), @@ -2753,7 +2777,7 @@ class DisplayItemView(IshtarMixin, TemplateView):      def dispatch(self, request, *args, **kwargs):          if not self.request.user.is_authenticated: -            return redirect_to_login(reverse("display-item", kwargs=kwargs)) +            return auth_view.redirect_to_login(reverse("display-item", kwargs=kwargs))          return super(DisplayItemView, self).dispatch(request, *args, **kwargs)      def get_context_data(self, *args, **kwargs):  | 
