Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)