22from typing import Annotated
33from database import User
44from sqlalchemy .orm import Session
5+ from passlib .hash import sha256_crypt
56from fastapi import APIRouter , Depends , Query , Header
67from pydantic import BaseModel
78from commons .utils import get_user_from_jwt , verify_user
@@ -17,13 +18,14 @@ class ChangePasswordModel(BaseModel):
1718
1819@user_router .post ("/change_password" , status_code = 200 )
1920def change_password (inputs : ChangePasswordModel , token : Annotated [str , Header ()], db : Session = Depends (database .db_session )):
20- user = get_user_from_jwt (token )
21- verify_user (user )
22- user : User = db .query (User ).filter ((User .username == inputs .username ) & (User .password == inputs .old_password )).first ()
23- if user is not None :
24- user .password = inputs .new_password
21+ username = get_user_from_jwt (token )
22+ verify_user (username )
23+ user : User = db .query (User ).filter (User .username == inputs .username ).first () # type: ignore
24+ if sha256_crypt .verify (inputs .old_password , user .password ): # type: ignore
25+ password = sha256_crypt .hash (inputs .new_password )
26+ user .password = password # type: ignore
2527 db .commit ()
2628 response = {"msg" : "success" }
2729 else :
28- response = {"msg" : "failed " }
30+ response = 400 , {"msg" : "You have entered the wrong password " }
2931 return response
0 commit comments