Spaces:
Sleeping
Sleeping
| import os | |
| import requests | |
| import logging | |
| from typing import Optional | |
| logger = logging.getLogger(__name__ ) | |
| # Get the secret key from environment variable | |
| RECAPTCHA_SECRET_KEY = os.environ.get("RECAPTCHA_SECRET_KEY") | |
| def verify_recaptcha(response_token: Optional[str]) -> bool: | |
| # LOGGING: Log the token start | |
| logger.info(f"Starting reCAPTCHA verification with token: {response_token[:10]}..." if response_token else "None") | |
| # Check if secret key is set | |
| secret_key = os.environ.get("RECAPTCHA_SECRET_KEY") | |
| if not secret_key: | |
| logger.warning("RECAPTCHA_SECRET_KEY not set, bypassing verification") | |
| return True | |
| else: | |
| # LOGGING: Log that secret key is set | |
| logger.info("RECAPTCHA_SECRET_KEY is set (not showing for security)") | |
| # If no token provided, verification fails | |
| if not response_token: | |
| logger.warning("No reCAPTCHA response token provided") | |
| return False | |
| try: | |
| # LOGGING: Log before making request | |
| logger.info("Sending verification request to Google reCAPTCHA API") | |
| verification_response = requests.post( | |
| "https://www.google.com/recaptcha/api/siteverify", | |
| data={ | |
| "secret": secret_key, | |
| "response": response_token | |
| } | |
| ) | |
| result = verification_response.json() | |
| # LOGGING: Log the complete result from Google | |
| logger.info(f"reCAPTCHA verification result: {result}") | |
| if result.get("success"): | |
| logger.info("reCAPTCHA verification successful") | |
| return True | |
| else: | |
| # LOGGING: Log the specific error codes | |
| logger.warning(f"reCAPTCHA verification failed: {result.get('error-codes', [])}") | |
| return False | |
| except Exception as e: | |
| # LOGGING: Log any exceptions | |
| logger.error(f"Error verifying reCAPTCHA: {str(e)}") | |
| return False | |