corrected "Method not allowed" error

This commit is contained in:
Fanilo-Nantenaina 2025-12-02 10:21:54 +03:00
parent 8c98a96630
commit 4b9adba739

View file

@ -1,4 +1,3 @@
# auth/routes.py
from fastapi import APIRouter, Depends, HTTPException, status, Request from fastapi import APIRouter, Depends, HTTPException, status, Request
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select from sqlalchemy import select
@ -194,13 +193,57 @@ async def register(
} }
@router.get("/verify-email")
async def verify_email_get(
token: str,
session: AsyncSession = Depends(get_session)
):
"""
Vérification de l'email via lien cliquable (GET)
Utilisé quand l'utilisateur clique sur le lien dans l'email
"""
result = await session.execute(
select(User).where(User.verification_token == token)
)
user = result.scalar_one_or_none()
if not user:
return {
"success": False,
"message": "Token de vérification invalide ou déjà utilisé."
}
# Vérifier l'expiration
if user.verification_token_expires < datetime.now():
return {
"success": False,
"message": "Token expiré. Veuillez demander un nouvel email de vérification.",
"expired": True
}
# Activer le compte
user.is_verified = True
user.verification_token = None
user.verification_token_expires = None
await session.commit()
logger.info(f"✅ Email vérifié: {user.email}")
return {
"success": True,
"message": "✅ Email vérifié avec succès ! Vous pouvez maintenant vous connecter.",
"email": user.email
}
@router.post("/verify-email") @router.post("/verify-email")
async def verify_email( async def verify_email_post(
data: VerifyEmailRequest, data: VerifyEmailRequest,
session: AsyncSession = Depends(get_session) session: AsyncSession = Depends(get_session)
): ):
""" """
Vérification de l'email via token Vérification de l'email via API (POST)
Utilisé pour les appels programmatiques depuis le frontend
""" """
result = await session.execute( result = await session.execute(
select(User).where(User.verification_token == data.token) select(User).where(User.verification_token == data.token)