Example #1
0
class ChangePasswordForm(Form):
    class Meta:
        title = gettext('Change password')

        @staticmethod
        def actions__submit__post_handler(form, request, **_):
            if form.is_valid():
                user = request.user
                user.set_password(form.fields.new_password.value)
                user.save()
                return HttpResponseRedirect('..')

    current_password = Field.password(is_valid=current_password__is_valid, display_name=gettext('Current password'))
    new_password = Field.password(is_valid=new_password__is_valid, display_name=gettext('New password'))
    confirm_password = Field.password(is_valid=confirm_password__is_valid, display_name=gettext('Confirm password'))
Example #2
0
File: views.py Project: boxed/forum
    class ResetPasswordForm(Form):
        reset_code = Field(
            is_valid=lambda parsed_data, **_:
            (parsed_data is not None, 'Invalid reset password code'),
            parse=parse)
        new_password = Field.password()
        confirm_password = Field.password(
            is_valid=lambda parsed_data, **_: (parsed_data == request.POST.get(
                'new_password'), 'Passwords do not match'))

        class Meta:
            title = 'Reset password'

            def actions__submit__post_handler(form, **_):
                if form.is_valid():
                    reset_code = form.fields.reset_code.value
                    reset_code.user.set_password(
                        form.fields.new_password.value)
                    login(request, reset_code.user)
                    reset_code.delete()
                    return HttpResponseRedirect('/')
Example #3
0
File: views.py Project: boxed/forum
    class LoginForm(Form):
        username = Field()
        password = Field.password()
        next = Field.hidden(initial=request.GET.get('next', '/'))

        class Meta:
            title = 'Login'

            def actions__submit__post_handler(form, **_):
                if 'user' in form.extra:
                    login(request, form.extra.user)
                    return HttpResponseRedirect(form.fields['next'].value
                                                or '/')

        def is_valid(self):
            if not super(LoginForm, self).is_valid():
                return False

            username = self.fields['username'].value
            password = self.fields['password'].value

            if username and password:
                try:
                    user = User.objects.get(username=username)
                except User.DoesNotExist:
                    return False
                self.extra.user = user
                if authenticate(request=request,
                                username=username,
                                password=password):
                    return True

                try:
                    username = User.objects.get(username=username)
                    if b64encode(sha1(password.encode()).digest()).decode(
                    ) == user.password:
                        user.set_password(password)  # upgrade password
                        user.save()
                    authenticate(request=request,
                                 username=username,
                                 password=password)
                except User.DoesNotExist:
                    pass

            return False
Example #4
0
class LoginForm(Form):
    username = Field(display_name=gettext('Username'))
    password = Field.password(display_name=gettext('Password'))

    class Meta:
        title = gettext('Login')

        @staticmethod
        def actions__submit__post_handler(form, **_):
            if form.is_valid():
                user = auth.authenticate(
                    username=form.fields.username.value,
                    password=form.fields.password.value,
                )

                if user is not None:
                    request = form.get_request()
                    auth.login(request, user)
                    return HttpResponseRedirect(request.GET.get('next', '/'))

                form.add_error(gettext('Unknown username or password'))