views.py 861 Bytes
import requests
from django.conf import settings
from oauth2_provider.views import TokenView


class CustomTokenView(TokenView):
    def post(self, request, *args, **kwargs):

        # realizar validaciones de recaptcha
        if 'captcha_value' not in request.POST:
            raise AttributeError(
                "El campo Valor de Captcha es obligatorio"
            )

        r = requests.post(
            'https://www.google.com/recaptcha/api/siteverify',
            data={
                'secret': settings.SECRET_KEY_CAPTCHA,
                'response': request.POST['captcha_value'],
            }
        )
        respuesta = r.json()
        if not respuesta["success"]:
            raise AttributeError(
                "Captcha inválido: " + respuesta['error-codes'][0]
            )

        return super().post(request, *args, **kwargs)