diff --git a/404.html b/404.html index 37213807..413753dc 100644 --- a/404.html +++ b/404.html @@ -614,8 +614,8 @@
FastAPI Users provides a dependency callable to easily inject authenticated user in your routes. They are available from your FastAPIUsers instance.
Tip
@@ -1123,119 +931,44 @@verified: If True, throw 403 Forbidden if the authenticated user is not verified. Defaults to False.superuser: If True, throw 403 Forbidden if the authenticated user is not a superuser. Defaults to False.@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.current_user())):
- return f"Hello, {user.email}"
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.current_user(active=True))):
- return f"Hello, {user.email}"
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.current_user(active=True, verified=True))):
- return f"Hello, {user.email}"
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.current_user(active=True, superuser=True))):
- return f"Hello, {user.email}"
-If you use it often, you can of course set it in a variable and reuse it at will:
-current_active_user = fastapi_users.current_user(active=True)
+
+Create it once and reuse it
+This function is a factory, a function returning another function 🤯
+It's this returned function that will be the dependency called by FastAPI in your API routes.
+To avoid having to generate it on each route and avoid issues when unit testing, it's strongly recommended that you assign the result in a variable and reuse it at will in your routes. The examples below demonstrate this pattern.
+
+Examples¶
+Get the current user (active or not)¶
+current_user = fastapi_users.current_user()
+@app.get("/protected-route")
+def protected_route(user: User = Depends(current_user)):
+ return f"Hello, {user.email}"
+
+Get the current active user¶
+current_active_user = fastapi_users.current_user(active=True)
@app.get("/protected-route")
def protected_route(user: User = Depends(current_active_user)):
return f"Hello, {user.email}"
-Deprecated¶
-
-Warning
-Those ones are still provided for backward compatibility but are deprecated and will be removed in a future release.
-
-get_current_user¶
-Get the current user (active or not). Will throw a 401 Unauthorized if missing or wrong credentials.
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.get_current_user)):
+Get the current active and verified user¶
+current_active_verified_user = fastapi_users.current_user(active=True, verified=True)
+
+@app.get("/protected-route")
+def protected_route(user: User = Depends(current_active_verified_user)):
return f"Hello, {user.email}"
-get_current_active_user¶
-Get the current active user. Will throw a 401 Unauthorized if missing or wrong credentials or if the user is not active.
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.get_current_active_user)):
+Get the current active superuser¶
+current_superuser = fastapi_users.current_user(active=True, superuser=True)
+
+@app.get("/protected-route")
+def protected_route(user: User = Depends(current_superuser)):
return f"Hello, {user.email}"
-get_current_verified_user¶
-Get the current active and verified user. Will throw a 401 Unauthorized if missing or wrong credentials or if the user is not active. Will throw a 403 Forbidden if the user is unverified.
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.get_current_verified_user)):
- return f"Hello, {user.email}"
-
-get_current_superuser¶
-Get the current superuser. Will throw a 401 Unauthorized if missing or wrong credentials or if the user is not active. Will throw a 403 Forbidden if the user is not a superuser.
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.get_current_superuser)):
- return f"Hello, {user.email}"
-
-get_current_verified_superuser¶
-Get the current verified superuser. Will throw a 401 Unauthorized if missing or wrong credentials or if the user is not active and verified. Will throw a 403 Forbidden if the user is not a superuser.
-@app.get("/protected-route")
-def protected_route(user: User = Depends(fastapi_users.get_current_verified_superuser)):
- return f"Hello, {user.email}"
-
-get_optional_current_user¶
-Get the current user (active or not). Will return None if missing or wrong credentials. It can be useful if you wish to change the behaviour of your endpoint if a user is logged in or not.
-@app.get("/optional-user-route")
-def optional_user_route(user: Optional[User] = Depends(fastapi_users.get_optional_current_user)):
- if user:
- return f"Hello, {user.email}"
- else:
- return "Hello, anonymous"
-
-get_optional_current_active_user¶
-Get the current active user. Will return None if missing or wrong credentials or if the user is not active. It can be useful if you wish to change the behaviour of your endpoint if a user is logged in or not.
-@app.get("/optional-user-route")
-def optional_user_route(user: User = Depends(fastapi_users.get_optional_current_active_user)):
- if user:
- return f"Hello, {user.email}"
- else:
- return "Hello, anonymous"
-
-get_optional_current_verified_user¶
-Get the current active and verified user. Will return None if missing or wrong credentials or if the user is not active and verified. It can be useful if you wish to change the behaviour of your endpoint if a user is logged in or not.
-@app.get("/optional-user-route")
-def optional_user_route(user: User = Depends(fastapi_users.get_optional_current_verified_user)):
- if user:
- return f"Hello, {user.email}"
- else:
- return "Hello, anonymous"
-
-get_optional_current_superuser¶
-Get the current superuser. Will return None if missing or wrong credentials or if the user is not active. It can be useful if you wish to change the behaviour of your endpoint if a user is logged in or not.
-@app.get("/optional-user-route")
-def optional_user_route(user: User = Depends(fastapi_users.get_optional_current_superuser)):
- if user:
- return f"Hello, {user.email}"
- else:
- return "Hello, anonymous"
-
-get_optional_current_verified_superuser¶
-Get the current active and verified superuser. Will return None if missing or wrong credentials or if the user is not active and verified. It can be useful if you wish to change the behaviour of your endpoint if a user is logged in or not.
-@app.get("/optional-user-route")
-def optional_user_route(user: User = Depends(fastapi_users.get_optional_current_verified_superuser)):
- if user:
- return f"Hello, {user.email}"
- else:
- return "Hello, anonymous"
-
-In path operation¶
+In a path operation¶
If you don't need the user in the route logic, you can use this syntax:
-@app.get("/protected-route", dependencies=[Depends(fastapi_users.get_current_superuser)])
+@app.get("/protected-route", dependencies=[Depends(current_superuser)])
def protected_route():
return "Hello, some user."
diff --git a/usage/flow/index.html b/usage/flow/index.html
index 87357e18..e020bb9a 100644
--- a/usage/flow/index.html
+++ b/usage/flow/index.html
@@ -930,8 +930,8 @@
-
- Dependency callables
+
+ Get current user
@@ -1523,7 +1523,7 @@ http://localhost:8000/users/me
Tip
-If you use one of the dependency callable to protect one of your own endpoint, you'll have to authenticate exactly in the same way.
+If you use one of the dependency callable to protect one of your own endpoint, you'll have to authenticate exactly in the same way.
4. Update my profile¶
We can also update our own profile. For example, we can change our password like this.
diff --git a/usage/helpers/index.html b/usage/helpers/index.html
index 3901ecb2..27c946d5 100644
--- a/usage/helpers/index.html
+++ b/usage/helpers/index.html
@@ -621,8 +621,8 @@
-
- Dependency callables
+
+ Get current user
@@ -896,7 +896,7 @@
diff --git a/usage/routes/index.html b/usage/routes/index.html
index 3d2f9e83..b33c1f46 100644
--- a/usage/routes/index.html
+++ b/usage/routes/index.html
@@ -830,8 +830,8 @@
-
- Dependency callables
+
+ Get current user
@@ -1574,13 +1574,13 @@
-
+