From 581b471908bbdd5e30e15e4138f7c4776ff847af Mon Sep 17 00:00:00 2001 From: emergent-agent-e1 Date: Sat, 8 Nov 2025 15:16:34 +0000 Subject: [PATCH] auto-commit for 908347a2-b255-4918-b3de-50fe6129c58e --- backend/server.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/backend/server.py b/backend/server.py index d2b16b5c..39808cff 100644 --- a/backend/server.py +++ b/backend/server.py @@ -262,6 +262,49 @@ async def get_proposals(): logger.error(f"Error fetching proposals: {e}") raise HTTPException(status_code=500, detail=str(e)) +# ======================================== +# TURNSTILE VERIFICATION ENDPOINT +# ======================================== + +@api_router.post("/verify-turnstile", response_model=TurnstileVerifyResponse) +async def verify_turnstile(request: TurnstileVerifyRequest): + """ + Verify Cloudflare Turnstile token + """ + try: + import httpx + + # Verify with Cloudflare API + verify_url = "https://challenges.cloudflare.com/turnstile/v0/siteverify" + + async with httpx.AsyncClient() as client: + response = await client.post( + verify_url, + json={ + "secret": TURNSTILE_SECRET_KEY, + "response": request.token, + } + ) + + result = response.json() + + if result.get("success"): + logger.info("✅ Turnstile verification successful") + return TurnstileVerifyResponse( + success=True, + message="Verification successful" + ) + else: + logger.warning(f"⚠️ Turnstile verification failed: {result}") + return TurnstileVerifyResponse( + success=False, + message="Verification failed" + ) + + except Exception as e: + logger.error(f"Error verifying turnstile: {e}") + raise HTTPException(status_code=500, detail=str(e)) + # ======================================== # AUTHENTICATION API ENDPOINTS # ========================================