diff --git a/backend/email_service.py b/backend/email_service.py index 4f047d1..fa905bb 100644 --- a/backend/email_service.py +++ b/backend/email_service.py @@ -238,7 +238,7 @@ def send_verification_email(email: str, token: str): raise RuntimeError("SMTP configuration is incomplete") verification_url = ( - f"https://ben.de-roo.org/verify-email?token={token}" + f"https://ben.de-roo.org/api/verify-email?token={token}" ) message = EmailMessage() diff --git a/backend/main.py b/backend/main.py index acf1e93..a433229 100644 --- a/backend/main.py +++ b/backend/main.py @@ -12,6 +12,7 @@ from fastapi import Query from database import fetch_one, execute from email_service import hash_token +from fastapi.responses import PlainTextResponse, HTMLResponse from database import get_table_names @@ -1006,7 +1007,10 @@ def api_update_email( data.email, ) -@app.get("/verify-email") +@app.get( + "/verify-email", + response_class=HTMLResponse, +) def verify_email(token: str = Query(...)): token_hash = hash_token(token) @@ -1020,12 +1024,23 @@ def verify_email(token: str = Query(...)): ) if not verification: - raise HTTPException( - status_code=400, - detail="Invalid verification token" - ) + return """ + + + + + Email verification + + +

Verification failed

+

This verification link is invalid.

+ + + """ - expires_at = datetime.fromisoformat(verification["expires_at"]) + expires_at = datetime.fromisoformat( + verification["expires_at"] + ) if expires_at < datetime.now(timezone.utc): execute( @@ -1036,10 +1051,19 @@ def verify_email(token: str = Query(...)): (verification["id"],) ) - raise HTTPException( - status_code=400, - detail="Verification token has expired" - ) + return """ + + + + + Email verification + + +

Verification expired

+

This verification link has expired.

+ + + """ execute( """ @@ -1058,10 +1082,47 @@ def verify_email(token: str = Query(...)): (verification["id"],) ) - return { - "status": "verified", - "message": "Email address successfully verified" - } + return """ + + + + + + Email verified + + + +
+

Email verified

+

Your email address has been successfully verified.

+
+ + + """ + # easter egg