diff --git a/requirements.txt b/requirements.txt index 347259791..b80ec6fb9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -31,6 +31,7 @@ Django==4.2.17 django-crispy-forms==2.3 django-environ==0.11.2 django-filter==24.3 +django-recaptcha==4.0.0 django-widget-tweaks==1.5.0 djangorestframework==3.15.2 doc8==0.11.1 diff --git a/setup.cfg b/setup.cfg index a3db96abd..8c6dc03c0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -99,6 +99,8 @@ install_requires = python-dotenv texttable + django-recaptcha>=4.0.0 + [options.extras_require] dev = diff --git a/vulnerabilities/forms.py b/vulnerabilities/forms.py index a00885637..50511571d 100644 --- a/vulnerabilities/forms.py +++ b/vulnerabilities/forms.py @@ -9,6 +9,8 @@ from django import forms from django.core.validators import validate_email +from django_recaptcha.fields import ReCaptchaField +from django_recaptcha.widgets import ReCaptchaV2Checkbox from vulnerabilities.models import ApiUser @@ -38,6 +40,10 @@ class ApiUserCreationForm(forms.ModelForm): Support a simplified creation for API-only users directly from the UI. """ + captcha = ReCaptchaField( + error_messages={"required": ("Captcha is required")}, widget=ReCaptchaV2Checkbox + ) + class Meta: model = ApiUser fields = ( diff --git a/vulnerabilities/templates/api_user_creation_form.html b/vulnerabilities/templates/api_user_creation_form.html index c7b2291f0..4c596f094 100644 --- a/vulnerabilities/templates/api_user_creation_form.html +++ b/vulnerabilities/templates/api_user_creation_form.html @@ -14,11 +14,17 @@ {% endfor %}