Skip to content

Commit

Permalink
Separate permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
mekanix committed Jun 16, 2022
1 parent dc6cf7a commit 13b4e4d
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
16 changes: 7 additions & 9 deletions freenit/api/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,32 @@
from fastapi import Depends, HTTPException

from freenit.api.router import route
from freenit.auth import encrypt, permissions
from freenit.auth import encrypt
from freenit.decorators import description
from freenit.models.user import User, UserOptional, UserSafe

profile_permissions = permissions()
user_permissions = permissions()
from freenit.permissions import profile_perms, user_perms


@route("/users", tags=["user"])
class UserListAPI:
@staticmethod
@description("Get users")
async def get(_: User = Depends(user_permissions)) -> List[UserSafe]:
async def get(_: User = Depends(user_perms)) -> List[UserSafe]:
return await User.objects.all()


@route("/users/{id}", tags=["user"])
class UserDetailAPI:
@staticmethod
async def get(id: int, _: User = Depends(user_permissions)) -> UserSafe:
async def get(id: int, _: User = Depends(user_perms)) -> UserSafe:
try:
user = await User.objects.get(pk=id)
except ormar.exceptions.NoMatch:
raise HTTPException(status_code=404, detail="No such user")
return user

@staticmethod
async def delete(id: int, _: User = Depends(user_permissions)) -> UserSafe:
async def delete(id: int, _: User = Depends(user_perms)) -> UserSafe:
try:
user = await User.objects.get(pk=id)
except ormar.exceptions.NoMatch:
Expand All @@ -45,13 +43,13 @@ async def delete(id: int, _: User = Depends(user_permissions)) -> UserSafe:
class ProfileDetailAPI:
@staticmethod
@description("Get my user")
async def get(user: User = Depends(profile_permissions)) -> UserSafe:
async def get(user: User = Depends(profile_perms)) -> UserSafe:
return user

@staticmethod
@description("Edit my user")
async def patch(
data: UserOptional, user: User = Depends(profile_permissions)
data: UserOptional, user: User = Depends(profile_perms)
) -> UserSafe:
if data.password:
data.password = encrypt(data.password)
Expand Down
4 changes: 0 additions & 4 deletions freenit/decorators.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import functools

from fastapi import HTTPException, Request

from freenit.auth import authorize


def FreenitAPI(app):
class route:
Expand Down
5 changes: 5 additions & 0 deletions freenit/permissions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from freenit.auth import permissions

group_perms = permissions()
profile_perms = permissions()
user_perms = permissions()

0 comments on commit 13b4e4d

Please sign in to comment.