def recover_password(email: str, db: Session = Depends(deps.get_db)) -> Any: """ Password Recovery """ if user := crud.user.get_by_email(db, email=email): password_reset_token = generate_password_reset_token(email=email) send_reset_password_email(email_to=user.email, email=email, token=password_reset_token) return {"msg": "Password recovery email sent"}
def recover_password(email: str = Body(...), identify_code: str = Body(...), answer: str = Body(...), db: Session = Depends(deps.get_db)) -> Any: """ Password Recovery """ # 验证码阶段 if red.exists(identify_code): true = red.get(identify_code).decode('ascii') if true != answer: raise HTTPException(status_code=400, detail="验证码错误") else: raise HTTPException(status_code=400, detail="验证码不存在") # 验证用户是否存在 user = crud.user.get_by_email(db, email=email) if not user: raise HTTPException( status_code=404, detail="The user with this username does not exist in the system.", ) # 用户存在,验证短信验证码 password_reset_token = generate_password_reset_token(email=email) message_code = generate_verification_code() codes = {message_code: password_reset_token} if not red.exists(email): try: red.setex(email, settings.EMAIL_RESET_TOKEN_EXPIRE_SECONDS, json.dumps(codes)) try: # 暂未开启API接口 if settings.USERS_OPEN_RESET_PASSWORD: send_result = send_message(message_code, email) print(send_result) print(message_code) print(email) except Exception as e: print(e) except Exception as e: print(e) else: raise HTTPException( status_code=404, detail="请等60秒", ) # 放弃发邮件,选择短信 # send_reset_password_email( # email_to=user.email, email=email, token=password_reset_token # ) return {"msg": "Password recovery email sent"}
def route_recover_password(name): bucket = get_default_bucket() user = get_user(bucket, name) if not user: return abort( 404, f"The user with this username does not exist in the system.") password_reset_token = generate_password_reset_token(name) send_reset_password_email(email_to=user.email, username=name, token=password_reset_token) return {"msg": "Password recovery email sent"}
def recover_password(email: str, db: Session = Depends(deps.get_db)) -> Any: """ Password Recovery """ user = crud.user.get_by_email(db, email=email) if not user: raise HTTPException( status_code=404, detail="The user with this username does not exist in the system.", ) password_reset_token = generate_password_reset_token(email=email) return {"msg": "Password recovery email sent"}
def test_reset_password(client: TestClient, db: Session, normal_user: models.User): token = utils.generate_password_reset_token(normal_user.email) new_password = random_lower_string() reset_password_data = {"token": token, "new_password": new_password} response = client.post(f"{settings.API_V1_STR}/reset-password", json=reset_password_data) response.raise_for_status() db.refresh(normal_user) user = crud.user.authenticate(db, username=normal_user.username, password=new_password) assert user
def recover_password(email: str) -> Any: """ Password Recovery """ user = crud.user.get_by_email(email=email) if not user: raise HTTPException( status_code=404, detail="The user with this username does not exist in the system.", ) password_reset_token = generate_password_reset_token(email=email) send_reset_password_email( email_to=user.email, email=email, token=password_reset_token ) return {"msg": "Password recovery email sent"}
def recover_password(email: str, db: Session = Depends(get_db)): """ Password Recovery """ user = crud.user.get_by_email(db, email=email) if not user: raise HTTPException( status_code=HTTP_404_NOT_FOUND, detail="The user with this username does not exist in the system.", ) password_reset_token = generate_password_reset_token(email=email) send_reset_password_email(email_to=user.email, email=email, token=password_reset_token) return {"msg": "Password recovery email sent"}
def recover_password(username: str): """ Password Recovery """ bucket = get_default_bucket() user = crud.user.get(bucket, username=username) if not user: raise HTTPException( status_code=404, detail="The user with this username does not exist in the system.", ) password_reset_token = generate_password_reset_token(username=username) send_reset_password_email(email_to=user.email, username=username, token=password_reset_token) return {"msg": "Password recovery email sent"}
def recover_password(email: str, db: Session = Depends(deps.get_db)) -> Any: """ Password Recovery """ user = crud.user.get_by_email(db, email=email) return_message = { "msg": "Password recovery email was sent if account exists." } if not user: return return_message password_reset_token = generate_password_reset_token(email=email) send_reset_password_email(email_to=user.email, email=email, token=password_reset_token) return return_message
async def recover_password(username: str): """ Password Recovery """ logging.info(">>> " + __name__ + ":" + recover_password.__name__ ) db = get_database() user = await crud.get(db, username) if not user: raise HTTPException( status_code=404, detail="The user with this username does not exist in the system.", ) password_reset_token = generate_password_reset_token(username=username) send_reset_password_email( email_to=user['email'], username=username, token=password_reset_token ) return {"msg": "Password recovery email sent."}
def mutate( root, info, username, db: Session = sync_db, ): user = crud.user.get_by_username(db, username=username) if not user: raise GraphQLError("A user with that username does not exist ") password_reset_token = generate_password_reset_token(email=user.email) # send httprequest to email service # email_to=user.email # email=user.email # token=password_reset_token msg = "Password recovery email sent" ok = True return RecoverPassword(ok=ok, msg=msg) # Reset password is an api_endpoint since it will be a link
def test_verify_password_reset_token(): test_email = '*****@*****.**' token = generate_password_reset_token(test_email) email = verify_password_reset_token(token) assert test_email == email