Implement password reset
This commit is contained in:
@@ -54,7 +54,7 @@ def create_user(data, db):
|
||||
return user
|
||||
|
||||
|
||||
def update_otp(data: OTPResend, db):
|
||||
def update_otp(data, db):
|
||||
db.query(Users).filter(Users.email == data.email).update(
|
||||
{Users.otp: data.otp, Users.otp_valid_time: data.otp_valid_time}
|
||||
)
|
||||
@@ -121,6 +121,12 @@ def deactivate_account(user, db):
|
||||
db.refresh(user)
|
||||
|
||||
|
||||
def unset_forgot_password(user, db):
|
||||
db.query(Users).filter(Users.email == user.email).update({Users.forgot_password: 0})
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
|
||||
|
||||
def verify_otp(data: OTPVerify, db):
|
||||
user = fetch_user_by_key(data=data, db=db)
|
||||
matching_otp = user.otp == data.otp
|
||||
@@ -143,3 +149,14 @@ def mark_password_reset(data, db):
|
||||
deactivate_account(user=user, db=db)
|
||||
|
||||
|
||||
def verify_password_reset(data, db):
|
||||
user = fetch_user_by_email(data=data, db=db)
|
||||
valid_account = user.status
|
||||
password_reset_request = user.forgot_password
|
||||
valid_request = valid_account and password_reset_request
|
||||
if valid_request:
|
||||
update_password_hash(user=user, password=data.password, db=db)
|
||||
unset_forgot_password(user=user, db=db)
|
||||
return user
|
||||
else:
|
||||
raise HTTPException(status_code=400, detail="The OTP is not correct")
|
||||
|
||||
Reference in New Issue
Block a user