46 lines
860 B
Markdown
46 lines
860 B
Markdown
|
|
# Authentication
|
||
|
|
|
||
|
|
OhMyAPI comes bundled with a builtin authentication app.
|
||
|
|
Simply add `ohmyapi_auth` to your `INSTALLED_APPS` and configure a `JWT_SECRET`.
|
||
|
|
|
||
|
|
## Enable Auth App
|
||
|
|
|
||
|
|
`settings.py`:
|
||
|
|
|
||
|
|
```
|
||
|
|
INSTALLED_APPS = [
|
||
|
|
"ohmyapi_auth",
|
||
|
|
...
|
||
|
|
]
|
||
|
|
|
||
|
|
JWT_SECRET = "t0ps3cr3t"
|
||
|
|
```
|
||
|
|
|
||
|
|
Remember to `makemigrations` and `migrate` to create the necessary database tables.
|
||
|
|
|
||
|
|
```
|
||
|
|
ohmyapi makemigrations
|
||
|
|
ohmyapi migrate
|
||
|
|
```
|
||
|
|
|
||
|
|
## Permissions
|
||
|
|
|
||
|
|
With the `ohmyapi_auth` app comes everything you need to implement API-level permissions.
|
||
|
|
Use FastAPI's `Depends` pattern in combination with either the provided or custom permissions.
|
||
|
|
|
||
|
|
```python
|
||
|
|
from ohmyapi.router import APIRouter, Depends
|
||
|
|
|
||
|
|
from ohmyapi_auth import (
|
||
|
|
models as auth,
|
||
|
|
permissions,
|
||
|
|
)
|
||
|
|
|
||
|
|
router = APIRouter()
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/")
|
||
|
|
def get(user: auth.User = Depends(permissions.required_authenticated)):
|
||
|
|
...
|
||
|
|
```
|