class PasswordRecoveryConfirmView(TemplateView): template_name = 'auths/password_recovery_form.html' def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated(): return redirect('main') try: data = TimestampSigner(salt='password-recovery-confirm').unsign( kwargs['token'], max_age=(48 * 3600)) user_id, last_login_hash = data.split(':') except (BadSignature, ValueError): raise Http404 user = User.objects.get(pk=user_id) if user.get_last_login_hash() != last_login_hash: raise Http404 if not user.confirmed_registration: user.confirmed_registration = True user.save(update_fields=('confirmed_registration', )) self.form = NewPasswordForm(user, request.POST or None) return super(PasswordRecoveryConfirmView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(PasswordRecoveryConfirmView, self).get_context_data(**kwargs) context['form'] = self.form return context def post(self, request, *args, **kwargs): if self.form.is_valid(): self.form.save() auth_login(request, self.form.user) return redirect('user_settings') return self.get(request, *args, **kwargs)
class PasswordRecoveryConfirmView(TemplateView): template_name = 'auths/password_recovery_form.html' def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated(): return redirect('main') try: data = TimestampSigner(salt='password-recovery-confirm').unsign(kwargs['token'], max_age=48*3600) user_id, last_login_hash = data.split(':') except (BadSignature, SignatureExpired, ValueError): raise Http404 user = User.objects.get(pk=user_id) if user.get_last_login_hash() != last_login_hash: raise Http404 if not user.confirned_registration: user.confirned_registration = True user.save(update_fields=('confirned_registration',)) self.form = NewPasswordForm(user, request.POST or None) return super(PasswordRecoveryConfirmView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(PasswordRecoveryConfirmView, self).get_context_data(**kwargs) context['form'] = self.form return context def post(self, request, *args, **kwargs): if self.form.is_valid(): self.form.save() self.form.user.backend = 'django.contrib.auth.backends.ModelBackend' auth_login(request, self.form.user) messages.success(request, _(u'Вы успешно изменили пароль.')) return redirect('user_settings') return self.get(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated(): return redirect('main') try: data = TimestampSigner(salt='password-recovery-confirm').unsign( kwargs['token'], max_age=(48 * 3600)) user_id, last_login_hash = data.split(':') except (BadSignature, ValueError): raise Http404 user = User.objects.get(pk=user_id) if user.get_last_login_hash() != last_login_hash: raise Http404 if not user.confirmed_registration: user.confirmed_registration = True user.save(update_fields=('confirmed_registration', )) self.form = NewPasswordForm(user, request.POST or None) return super(PasswordRecoveryConfirmView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated(): return redirect('main') try: data = TimestampSigner(salt='password-recovery-confirm').unsign(kwargs['token'], max_age=48*3600) user_id, last_login_hash = data.split(':') except (BadSignature, SignatureExpired, ValueError): raise Http404 user = User.objects.get(pk=user_id) if user.get_last_login_hash() != last_login_hash: raise Http404 if not user.confirned_registration: user.confirned_registration = True user.save(update_fields=('confirned_registration',)) self.form = NewPasswordForm(user, request.POST or None) return super(PasswordRecoveryConfirmView, self).dispatch(request, *args, **kwargs)