fix password update #53

Merged
v4l3n71n merged 1 commits from feature/passwordForgot into master 2025-02-15 11:09:13 +00:00
Showing only changes of commit 8f3f2d0f98 - Show all commits

View File

@ -95,12 +95,25 @@ async def reset_password(request: Request, key: str | None = None, email: str |
@router.post("/password/update", tags=["password"]) @router.post("/password/update", tags=["password"])
async def update_password(request: Request, email: str = Form(...), key: str = Form(...), new_password: str = Form(...)): # Vérification du token dans Redis async def update_password(request: Request, email: str = Form(...), key: str = Form(...), new_password: str = Form(...)): # Vérification du token dans Redis
# Récupérer la clé hachée depuis Redis
key_hashed = database.connect_redis.get(email) key_hashed = database.connect_redis.get(email)
if key_hashed is None or key_hashed.decode() != key: if key_hashed is None:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
detail="Key is invalid or expired" detail="Invalid or expired reset key"
)
# Redis stocke les valeurs en `bytes`, donc il faut décoder si nécessaire
if isinstance(key_hashed, bytes):
key_hashed = key_hashed.decode()
# Vérifier que la clé en clair correspond au hash stocké
if not bcrypt.checkpw(key.encode(), key_hashed.encode()):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Invalid reset key"
) )
# Recherche de l'utilisateur dans la base de données # Recherche de l'utilisateur dans la base de données