diff --git a/freenit/api/user.py b/freenit/api/user.py index 9ebdebf..003e975 100644 --- a/freenit/api/user.py +++ b/freenit/api/user.py @@ -5,26 +5,24 @@ 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: @@ -32,7 +30,7 @@ async def get(id: int, _: User = Depends(user_permissions)) -> UserSafe: 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: @@ -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) diff --git a/freenit/decorators.py b/freenit/decorators.py index 7e73639..5e02683 100644 --- a/freenit/decorators.py +++ b/freenit/decorators.py @@ -1,9 +1,5 @@ import functools -from fastapi import HTTPException, Request - -from freenit.auth import authorize - def FreenitAPI(app): class route: diff --git a/freenit/permissions.py b/freenit/permissions.py new file mode 100644 index 0000000..4c55747 --- /dev/null +++ b/freenit/permissions.py @@ -0,0 +1,5 @@ +from freenit.auth import permissions + +group_perms = permissions() +profile_perms = permissions() +user_perms = permissions()