summaryrefslogtreecommitdiff
path: root/backend/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/main.py')
-rw-r--r--backend/main.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/backend/main.py b/backend/main.py
index a5faf36..8b97d66 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -3,6 +3,7 @@ from fastapi.middleware.cors import CORSMiddleware
import requests
from dotenv import load_dotenv
from os import getenv
+from pydantic import BaseModel
print("Hello, world!")
load_dotenv()
@@ -24,6 +25,11 @@ app.add_middleware(
)
+class TurnstileTokenData(BaseModel):
+ token: str
+ remoteip: str
+
+
@app.post("/email")
def email(token):
if validate_turnstile(token):
@@ -42,19 +48,19 @@ def email(token):
# https://developers.cloudflare.com/turnstile/get-started/server-side-validation/, modified
# returns response if success, returns None if unsuccessful.
-def validate_turnstile(token, remoteip=None) -> tuple:
+def validate_turnstile(data: TurnstileTokenData) -> tuple:
url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify'
- data = {
+ send = {
'secret': TURNSTILE_SECRET,
- 'response': token
+ 'response': data.token
}
- if remoteip:
- data['remoteip'] = remoteip
+ if data.remoteip:
+ data['remoteip'] = data.remoteip
try:
- response = requests.post(url, data=data, timeout=10)
+ response = requests.post(url, data=send, timeout=10)
response.raise_for_status()
return response.json()
except requests.RequestException as e: