diff --git a/Rasta_Web/settings/base.py b/Rasta_Web/settings/base.py index 1c04e87..76aa582 100644 --- a/Rasta_Web/settings/base.py +++ b/Rasta_Web/settings/base.py @@ -280,3 +280,6 @@ def get_environment_var(var_name, default, prefixed=True): CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TIMEZONE = 'Asia/Tehran' +# hCaptcha Configuration +HCAPTCHA_SECRET = 'ES_2e3d6c59b25545518d66440a54b509c8' +HCAPTCHA_SITE_KEY = '2eb27272-fab4-4bee-8b54-2ec48ac0d214' diff --git a/Rasta_Web/utils.py b/Rasta_Web/utils.py index f42dc31..a38781f 100644 --- a/Rasta_Web/utils.py +++ b/Rasta_Web/utils.py @@ -1,5 +1,5 @@ from django.core.exceptions import ValidationError - +from django.conf import settings from Rasta_Web.settings import base import requests from django.contrib import messages @@ -29,6 +29,28 @@ def check_bibot_response(request): messages.error(request, 'ارتباط با سرور بیبات برقرار نشده است! آیا جاوااسکریپت شما فعال است؟') return False +def check_hcaptcha_response(request): + hcaptcha_response = request.POST.get('h-captcha-response') + if hcaptcha_response: + verification_url = "https://hcaptcha.com/siteverify" + payload = { + 'secret': settings.HCAPTCHA_SECRET, + 'response': hcaptcha_response, + 'remoteip': request.META.get('REMOTE_ADDR') # Optional + } + response = requests.post(verification_url, data=payload) + result = response.json() + + if result.get('success'): + messages.success(request, 'تأیید hCaptcha با موفقیت انجام شد!') + return True + else: + messages.error(request, 'تأیید hCaptcha ناموفق بود. لطفاً دوباره تلاش کنید.') + return False + else: + messages.error(request, 'لطفاً hCaptcha را تکمیل کنید.') + return False + def validate_image_size(image): limit_mb = 5 diff --git a/apps/blog/views.py b/apps/blog/views.py index 36b83d3..2580833 100644 --- a/apps/blog/views.py +++ b/apps/blog/views.py @@ -5,7 +5,7 @@ from django.shortcuts import render from Rasta_Web.settings.base import bibot_SiteKey -from Rasta_Web.utils import check_bibot_response +from Rasta_Web.utils import check_hcaptcha_response from apps.blog.forms import CommentForm, ReplyForm from apps.blog.models import * from django.template.loader import render_to_string @@ -135,8 +135,8 @@ def get_single_post(request, post_id, rest): def submit_comment_reply(request): response = {} - if not check_bibot_response(request): - response['bibot_err'] = 'error' + if not check_hcaptcha_response(request): + response['hcaptcha_err'] = 'error' return HttpResponse( json.dumps(response), content_type="application/json" diff --git a/apps/contact_us/templates/contact_us/form.html b/apps/contact_us/templates/contact_us/form.html index f4a0928..566fb4d 100644 --- a/apps/contact_us/templates/contact_us/form.html +++ b/apps/contact_us/templates/contact_us/form.html @@ -39,6 +39,7 @@