📝 Add model-level permissions example
This commit is contained in:
parent
3d61ecd216
commit
73785faebf
1 changed files with 21 additions and 1 deletions
22
README.md
22
README.md
|
|
@ -225,7 +225,7 @@ ohmyapi createsuperuser
|
||||||
|
|
||||||
## Permissions
|
## Permissions
|
||||||
|
|
||||||
### API-Level
|
### API-Level Permissions
|
||||||
|
|
||||||
Use FastAPI's `Depends` pattern to implement API-level access-control.
|
Use FastAPI's `Depends` pattern to implement API-level access-control.
|
||||||
|
|
||||||
|
|
@ -255,3 +255,23 @@ async def list(user: auth.User = Depends(permissions.require_authenticated)):
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Model-Level Permissions
|
||||||
|
|
||||||
|
Use Tortoise's `Manager` to implement model-layer permissions.
|
||||||
|
|
||||||
|
```python
|
||||||
|
from ohmyapi.db import Manager
|
||||||
|
from typing import Callable
|
||||||
|
|
||||||
|
|
||||||
|
class TeamManager(Manager):
|
||||||
|
async def for_user(self, user):
|
||||||
|
return await self.filter(members=user).all()
|
||||||
|
|
||||||
|
|
||||||
|
class Team(Model):
|
||||||
|
[...]
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
manager = TeamManager()
|
||||||
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue