39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import json
|
|
import requests
|
|
from django.shortcuts import get_object_or_404
|
|
from django.http import HttpResponse
|
|
from django.conf import settings
|
|
from django.views.generic.detail import DetailView
|
|
from nobotapp.models import CaptchaUrl
|
|
|
|
|
|
class CaptchaRedirect(DetailView):
|
|
template_name = "captcha.html"
|
|
model = CaptchaUrl
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context_data = super().get_context_data(**kwargs)
|
|
context_data['site_key'] = settings.GOOGLE_RECAPTCHA_SITE_KEY
|
|
return context_data
|
|
|
|
def post(self, request, slug):
|
|
obj = get_object_or_404(CaptchaUrl, slug=slug)
|
|
try:
|
|
token = request.POST['token']
|
|
except KeyError:
|
|
return HttpResponse(status=403)
|
|
|
|
request_data = {
|
|
'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
|
|
'response': token
|
|
}
|
|
resp = requests.post(
|
|
'https://www.google.com/recaptcha/api/siteverify',
|
|
data=request_data)
|
|
|
|
data = json.loads(resp.content)
|
|
if not data['success']:
|
|
return HttpResponse(status=403)
|
|
|
|
return HttpResponse(obj.destination)
|