def perform_create(self, serializer, remote_ip):
captcha = (
ipaddress.ip_address(remote_ip) not in ipaddress.IPv6Network(os.environ['DESECSTACK_IPV6_SUBNET'])
and (
User.objects.filter(
created__gte=timezone.now()-timedelta(hours=settings.ABUSE_BY_REMOTE_IP_PERIOD_HRS),
registration_remote_ip=remote_ip
).count() >= settings.ABUSE_BY_REMOTE_IP_LIMIT
or
User.objects.filter(
created__gte=timezone.now() - timedelta(hours=settings.ABUSE_BY_EMAIL_HOSTNAME_PERIOD_HRS),
email__endswith=serializer.validated_data['email'].split('@')[-1]
).count() >= settings.ABUSE_BY_EMAIL_HOSTNAME_LIMIT
)
)
user = serializer.save(registration_remote_ip=remote_ip, captcha_required=captcha)
if user.captcha_required:
send_account_lock_email(self.request, user)
elif not user.dyn:
context = {'token': user.get_token()}
send_token_email(context, user)
signals.user_registered.send(sender=self.__class__, user=user, request=self.request)
评论列表
文章目录