diff --git a/ivatar/ivataraccount/urls.py b/ivatar/ivataraccount/urls.py index 3e45013..cdf22ce 100644 --- a/ivatar/ivataraccount/urls.py +++ b/ivatar/ivataraccount/urls.py @@ -6,12 +6,12 @@ from django.conf.urls import url from django.views.generic import TemplateView from django.contrib.auth.views import LogoutView -from django.contrib.auth.views import PasswordResetView, PasswordResetDoneView,\ +from django.contrib.auth.views import PasswordResetDoneView,\ PasswordResetConfirmView, PasswordResetCompleteView from django.contrib.auth.views import PasswordChangeView, PasswordChangeDoneView from django.contrib.auth.decorators import login_required -from . views import ProfileView +from . views import ProfileView, PasswordResetView from . views import CreateView, PasswordSetView, AddEmailView from . views import RemoveUnconfirmedEmailView, ConfirmEmailView from . views import RemoveConfirmedEmailView, AssignPhotoEmailView diff --git a/ivatar/ivataraccount/views.py b/ivatar/ivataraccount/views.py index 6cff83c..9a9f2fb 100644 --- a/ivatar/ivataraccount/views.py +++ b/ivatar/ivataraccount/views.py @@ -21,6 +21,7 @@ from django.views.generic.detail import DetailView from django.contrib.auth import authenticate, login from django.contrib.auth.forms import UserCreationForm, SetPasswordForm from django.contrib.auth.views import LoginView +from django.contrib.auth.views import PasswordResetView as PasswordResetViewOriginal from django.utils.translation import ugettext_lazy as _ from django.http import HttpResponseRedirect, HttpResponse from django.urls import reverse_lazy, reverse @@ -894,3 +895,23 @@ class ProfileView(TemplateView): confirmed.ip_address = get_client_ip(self.request)[0] confirmed.openid = openids.first().claimed_id confirmed.save() + +class PasswordResetView(PasswordResetViewOriginal): + ''' + View class for password reset + ''' + + def post(self, request, *args, **kwargs): + ''' + Since we have the mail addresses in ConfirmedEmail model, + we need to set the email on the user object in order for the + PasswordResetView class to pick up the correct user + ''' + if 'email' in request.POST: + try: + confirmed_email = ConfirmedEmail.objects.get(email=request.POST['email']) + confirmed_email.user.email = confirmed_email.email + confirmed_email.user.save() + except Exception as exc: + pass + return super().post(self, request, args, kwargs)