Start a forgot password request. Triggers the on_after_forgot_password handler on success. :param user: The user that forgot its password. :param request: Optional FastAPI request that triggered the operation, defaults to None. :raises UserInactive:
(
self, user: models.UP, request: Request | None = None
)
| 356 | return verified_user |
| 357 | |
| 358 | async def forgot_password( |
| 359 | self, user: models.UP, request: Request | None = None |
| 360 | ) -> None: |
| 361 | """ |
| 362 | Start a forgot password request. |
| 363 | |
| 364 | Triggers the on_after_forgot_password handler on success. |
| 365 | |
| 366 | :param user: The user that forgot its password. |
| 367 | :param request: Optional FastAPI request that |
| 368 | triggered the operation, defaults to None. |
| 369 | :raises UserInactive: The user is inactive. |
| 370 | """ |
| 371 | if not user.is_active: |
| 372 | raise exceptions.UserInactive() |
| 373 | |
| 374 | token_data = { |
| 375 | "sub": str(user.id), |
| 376 | "password_fgpt": self.password_helper.hash(user.hashed_password), |
| 377 | "aud": self.reset_password_token_audience, |
| 378 | } |
| 379 | token = generate_jwt( |
| 380 | token_data, |
| 381 | self.reset_password_token_secret, |
| 382 | self.reset_password_token_lifetime_seconds, |
| 383 | ) |
| 384 | await self.on_after_forgot_password(user, token, request) |
| 385 | |
| 386 | async def reset_password( |
| 387 | self, token: str, password: str, request: Request | None = None |