Exemple #1
0
    def pre_save(self, obj):
        can_save = False

        # If followers will be emailed then check the request user
        # has permissions, eg they are the owner / author of the
        # parent object (project, task, fundraiser).
        if obj.email_followers:
            parent_obj = obj.content_object

            if isinstance(parent_obj, PROJECT_MODEL) or \
               isinstance(parent_obj, FUNDRAISER_MODEL):
                can_save = parent_obj.owner == self.request.user
            elif isinstance(parent_obj, TASK_MODEL):
                can_save = parent_obj.author == self.request.user
        else:
          can_save = True

        if not can_save:
            raise exceptions.PermissionDenied()

        # Set the author / editor and ip address for the request
        if not obj.author:
            obj.author = self.request.user
        else:
            obj.editor = self.request.user
        obj.ip_address = get_client_ip(self.request)
Exemple #2
0
    def perform_create(self, serializer):
        self.check_object_permissions(
            self.request,
            serializer.Meta.model(author=self.request.user,
                                  **serializer.validated_data))

        serializer.save(author=self.request.user,
                        ip_address=get_client_ip(self.request))
Exemple #3
0
    def process_response(self, request, response):
        """ Log a message for each failed login attempt. """
        if reverse('admin:login') == request.path and request.method == 'POST' and response.status_code != 302:
            authorization_logger.error('Authorization failed: {username} {ip}'.format(
               ip=get_client_ip(request), username=request.POST.get('username')
            ))

        if reverse('token-auth') == request.path and request.method == 'POST' and response.status_code != 200:
            try:
                data = json.loads(request.body)
            except ValueError:
                data  = request.POST

            authorization_logger.error('Authorization failed: {username} {ip}'.format(
               ip=get_client_ip(request), username=data.get('email')
            ))

        return response
Exemple #4
0
    def post(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=request.data,
                                           context={'request': request})

        serializer.is_valid(raise_exception=True)

        ip = get_client_ip(request)
        reset(ip=ip)

        return response.Response(status=status.HTTP_201_CREATED)
Exemple #5
0
    def pre_save(self, obj):
        """
        Set the voter.
        Check that a user has not voted before
        """
        try:
            self.get_queryset().get(voter=self.request.user,
                                    project=obj.project)
            raise exceptions.ParseError(["You cannot vote twice"])
        except Vote.DoesNotExist:
            pass

        obj.voter = self.request.user
        obj.ip_address = get_client_ip(self.request)
Exemple #6
0
    def process_response(self, request, response):
        """ Log a message for each failed login attempt. """
        if reverse(
                'admin:login'
        ) == request.path and request.method == 'POST' and response.status_code != 302:
            error = 'Authorization failed: {username} {ip}'.format(
                ip=get_client_ip(request),
                username=request.POST.get('username'))
            authorization_logger.error(error)

        if reverse(
                'token-auth'
        ) == request.path and request.method == 'POST' and response.status_code != 200:
            try:
                data = json.loads(request.body)
            except ValueError:
                data = request.POST

            error = 'Authorization failed: {username} {ip}'.format(
                ip=get_client_ip(request), username=data.get('email'))
            authorization_logger.error(error)

        return response
def locked_out(request):
    if request.POST:
        form = AxesCaptchaForm(request.POST)
        if form.is_valid():
            ip = get_client_ip(request)
            reset(ip=ip)

            return HttpResponseRedirect(reverse('admin:login'))
    else:
        form = AxesCaptchaForm()

    return render(
        request,
        'admin/locked_out.html',
        dict(form=form),
    )
Exemple #8
0
    def to_internal_value(self, data):
        result = super(CaptchaField, self).to_internal_value(data)

        try:
            captcha = client.submit(recaptcha_response=result,
                                    private_key=settings.RECAPTCHA_PRIVATE_KEY,
                                    remoteip=get_client_ip(
                                        self.context['request']))
        except HTTPError:  # Catch timeouts, etc
            raise serializers.ValidationError(
                self.error_messages["captcha_error"], code="captcha_error")

        if not captcha.is_valid or not validate_host(
                captcha.extra_data['hostname'], settings.ALLOWED_HOSTS):
            raise serializers.ValidationError('Captcha value is not valid')

        return result
Exemple #9
0
 def perform_create(self, serializer):
     """
     Set the voter.
     Check that a user has not voted before
     """
     serializer.save(ip_address=get_client_ip(self.request))
Exemple #10
0
 def perform_update(self, serializer):
     serializer.save(editor=self.request.user,
                     ip_address=get_client_ip(self.request))
Exemple #11
0
 def perform_create(self, serializer):
     serializer.save(author=self.request.user,
                     ip_address=get_client_ip(self.request))
Exemple #12
0
 def perform_update(self, serializer):
     serializer.save(editor=self.request.user, ip_address=get_client_ip(self.request))
Exemple #13
0
 def perform_create(self, serializer):
     serializer.save(author=self.request.user, ip_address=get_client_ip(self.request))
Exemple #14
0
    def get_user_data(self):
        user = self.order_payment.order.user
        ip_address = get_client_ip()

        if user:
            user_data = {
                'id': user.id,
                'first_name': user.first_name or 'Unknown',
                'last_name': user.last_name or 'Unknown',
                'email': user.email,
                'ip_address': ip_address,
            }
        else:
            user_data = {
                'id': 1,
                'first_name': 'Nomen',
                'last_name': 'Nescio',
                'email': settings.CONTACT_EMAIL,
                'ip_address': ip_address
            }


        if user and hasattr(user, 'address'):

            street = user.address.line1.split(' ')
            if street[-1] and any(char.isdigit() for char in street[-1]):
                user_data['house_number'] = street.pop(-1)
                user_data['street'] = ' '.join(street)
            else:
                user_data['house_number'] = 'Unknown'
                if user.address.line1:
                    user_data['street'] = user.address.line1
                else:
                    user_data['street'] = 'Unknown'

            if user.address.postal_code:
                user_data['postal_code'] = user.address.postal_code
            else:
                user_data['postal_code'] = 'Unknown'
            if user.address.city:
                user_data['city'] = user.address.city
            else:
                user_data['city'] = 'Unknown'
            if user.address.country and hasattr(user.address.country, 'alpha2_code'):
                user_data['country'] = user.address.country.alpha2_code
            elif get_country_code_by_ip(ip_address):
                user_data['country'] = get_country_code_by_ip(ip_address)
            else:
                user_data['country'] = 'NL'
        else:
            user_data['postal_code'] = 'Unknown'
            user_data['street'] = 'Unknown'
            user_data['city'] = 'Unknown'
            country = get_country_code_by_ip(ip_address)
            if country:
                user_data['country'] = country
            else:
                user_data['country'] = 'NL'
            user_data['house_number'] = 'Unknown'

        if not user_data['country']:
            user_data['country'] = 'NL'

        user_data['company'] = ''
        user_data['kvk_number'] = ''
        user_data['vat_number'] = ''
        user_data['house_number_addition'] = ''
        user_data['state'] = ''
        return user_data
Exemple #15
0
 def perform_create(self, serializer):
     """
     Set the voter.
     Check that a user has not voted before
     """
     serializer.save(ip_address=get_client_ip(self.request))
    def test_get_client_ip_extra_spaces(self):
        request = RequestFactory().get(
            '/', HTTP_X_FORWARDED_FOR='8.8.8.8, 127.0.0.1 ')

        ip = get_client_ip(request)
        self.assertEqual(ip, '127.0.0.1')
Exemple #17
0
 def pre_save(self, obj):
     obj.author = self.request.user
     obj.ip_address = get_client_ip(self.request)
Exemple #18
0
    def get_user_data(self):
        user = self.order_payment.order.user
        ip_address = get_client_ip()

        if user:
            user_data = {
                'id': user.id,
                'first_name': user.first_name or 'Unknown',
                'last_name': user.last_name or 'Unknown',
                'email': user.email,
                'ip_address': ip_address,
            }
        else:
            user_data = {
                'id': 1,
                'first_name': 'Nomen',
                'last_name': 'Nescio',
                'email': properties.CONTACT_EMAIL,
                'ip_address': ip_address
            }

        default_country_code = getattr(properties, 'DEFAULT_COUNTRY_CODE')

        if user and hasattr(user, 'address'):
            street = user.address.line1.split(' ')
            if street[-1] and any(char.isdigit() for char in street[-1]):
                user_data['house_number'] = street.pop(-1)
                if len(street):
                    user_data['street'] = ' '.join(street)
                else:
                    user_data['street'] = 'Unknown'
            else:
                user_data['house_number'] = 'Unknown'
                if user.address.line1:
                    user_data['street'] = user.address.line1
                else:
                    user_data['street'] = 'Unknown'

            if user.address.postal_code:
                user_data['postal_code'] = user.address.postal_code
            else:
                user_data['postal_code'] = 'Unknown'
            if user.address.city:
                user_data['city'] = user.address.city
            else:
                user_data['city'] = 'Unknown'
            if user.address.country and hasattr(user.address.country,
                                                'alpha2_code'):
                user_data['country'] = user.address.country.alpha2_code
            else:
                user_data['country'] = default_country_code
        else:
            user_data['postal_code'] = 'Unknown'
            user_data['street'] = 'Unknown'
            user_data['city'] = 'Unknown'
            user_data['country'] = default_country_code
            user_data['house_number'] = 'Unknown'

        if not user_data['country']:
            user_data['country'] = default_country_code

        user_data['company'] = ''
        user_data['kvk_number'] = ''
        user_data['vat_number'] = ''
        user_data['house_number_addition'] = ''
        user_data['state'] = ''

        return user_data
Exemple #19
0
 def pre_save(self, obj):
     if not obj.author:
         obj.author = self.request.user
     else:
         obj.editor = self.request.user
     obj.ip_address = get_client_ip(self.request)
    def test_get_client_ip(self):
        request = RequestFactory().get('/', HTTP_REMOTE_ADDR='127.0.0.1')

        ip = get_client_ip(request)
        self.assertEqual(ip, '127.0.0.1')