Router¶
We're almost there! The last step is to configure the FastAPIUsers object that will wire the database adapter, the authentication class and the user model to expose the FastAPI router.
Hooks¶
In order to be as unopinionated as possible, you'll have to define your logic after some actions.
After forgot password¶
This hook is called after a successful forgot password request. It is called with two arguments: the user which has requested to reset their password and a ready-to-use JWT token that will be accepted by the reset password route.
Typically, you'll want to send an e-mail with the link (and the token) that allows the user to reset their password.
You can define it as an async or standard method.
Example:
def on_after_forgot_password(user, token): print(f'User {user.id} has forgot their password. Reset token: {token}')
Configure FastAPIUsers¶
The last step is to instantiate FastAPIUsers object with all the elements we defined before. More precisely:
db: Database adapter instance.auth: Authentication logic instance.user_model: Pydantic model of a user.on_after_forgot_password: Hook called after a forgot password request.reset_password_token_secret: Secret to encode reset password token.reset_password_token_lifetime_seconds: Lifetime of reset password token in seconds. Default to one hour.
from fastapi_users import FastAPIUsers fastapi_users = FastAPIUsers( user_db, auth, User, on_after_forgot_password, SECRET, )
And then, include the router in the FastAPI app:
app = FastAPI() app.include_router(fastapi_users.router, prefix="/users", tags=["users"])
Next steps¶
Check out a full example that will show you the big picture.