mirror of
https://github.com/fastapi-users/fastapi-users.git
synced 2026-03-13 07:49:55 +08:00
Fix #335: implement after_reset_password handler
This commit is contained in:
@@ -150,6 +150,7 @@ class FastAPIUsers:
|
||||
after_forgot_password: Optional[
|
||||
Callable[[models.UD, str, Request], None]
|
||||
] = None,
|
||||
after_reset_password: Optional[Callable[[models.UD, Request], None]] = None,
|
||||
) -> APIRouter:
|
||||
"""
|
||||
Return a reset password process router.
|
||||
@@ -158,12 +159,15 @@ class FastAPIUsers:
|
||||
:param reset_password_token_lifetime_seconds: Lifetime of reset password token.
|
||||
:param after_forgot_password: Optional function called after a successful
|
||||
forgot password request.
|
||||
:param after_reset_password: Optional function called after a successful
|
||||
password reset.
|
||||
"""
|
||||
return get_reset_password_router(
|
||||
self.db,
|
||||
reset_password_token_secret,
|
||||
reset_password_token_lifetime_seconds,
|
||||
after_forgot_password,
|
||||
after_reset_password,
|
||||
)
|
||||
|
||||
def get_auth_router(
|
||||
|
||||
@@ -18,6 +18,7 @@ def get_reset_password_router(
|
||||
reset_password_token_secret: str,
|
||||
reset_password_token_lifetime_seconds: int = 3600,
|
||||
after_forgot_password: Optional[Callable[[models.UD, str, Request], None]] = None,
|
||||
after_reset_password: Optional[Callable[[models.UD, Request], None]] = None,
|
||||
) -> APIRouter:
|
||||
"""Generate a router with the reset password routes."""
|
||||
router = APIRouter()
|
||||
@@ -41,7 +42,9 @@ def get_reset_password_router(
|
||||
return None
|
||||
|
||||
@router.post("/reset-password")
|
||||
async def reset_password(token: str = Body(...), password: str = Body(...)):
|
||||
async def reset_password(
|
||||
request: Request, token: str = Body(...), password: str = Body(...)
|
||||
):
|
||||
try:
|
||||
data = jwt.decode(
|
||||
token,
|
||||
@@ -73,6 +76,8 @@ def get_reset_password_router(
|
||||
|
||||
user.hashed_password = get_password_hash(password)
|
||||
await user_db.update(user)
|
||||
if after_reset_password:
|
||||
await run_handler(after_reset_password, user, request)
|
||||
except jwt.PyJWTError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
|
||||
Reference in New Issue
Block a user