corrected "Method not allowed" error
This commit is contained in:
parent
8c98a96630
commit
4b9adba739
1 changed files with 46 additions and 3 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue