Unverified Commit 0fb9d5fa authored by mvdbeek's avatar mvdbeek
Browse files

Add a DependsOnUser dependency

parent b0705ed5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -209,6 +209,11 @@ class UserCannotRunAsException(MessageException):
    err_code = error_codes_by_name["USER_CANNOT_RUN_AS"]


class UserRequiredException(MessageException):
    status_code = 403
    err_code = error_codes_by_name["USER_REQUIRED"]


class AdminRequiredException(MessageException):
    status_code = 403
    err_code = error_codes_by_name["ADMIN_REQUIRED"]
+5 −0
Original line number Diff line number Diff line
@@ -144,6 +144,11 @@
        "code": 403007,
        "message": "Action requires account activation."
    },
    {
        "name": "USER_REQUIRED",
        "code": 403008,
        "message": "Action requires user authentication."
    },
    {
        "name": "USER_OBJECT_NOT_FOUND",
        "code": 404001,
+14 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ from galaxy import (
from galaxy.exceptions import (
    AdminRequiredException,
    UserCannotRunAsException,
    UserRequiredException,
)
from galaxy.managers.session import GalaxySessionManager
from galaxy.managers.users import UserManager
@@ -183,6 +184,17 @@ def get_user(
    return api_user


def get_required_user(
    galaxy_session=cast(Optional[model.GalaxySession], Depends(get_session)),
    api_user=cast(Optional[User], Depends(get_api_user)),
) -> User:
    if galaxy_session and (user := galaxy_session.user):
        return user
    if api_user:
        return api_user
    raise UserRequiredException


class UrlBuilder:
    def __init__(self, request: Request):
        self.request = request
@@ -310,7 +322,7 @@ class GalaxyASGIResponse(GalaxyAbstractResponse):
        )


DependsOnUser = cast(Optional[User], Depends(get_user))
DependsOnUser = cast(User, Depends(get_required_user))


def get_current_history_from_session(galaxy_session: Optional[model.GalaxySession]) -> Optional[model.History]:
@@ -485,6 +497,7 @@ class FrameworkRouter(APIRouter):

class Router(FrameworkRouter):
    admin_user_dependency = AdminUserRequired
    user_dependency = DependsOnUser


class APIContentTypeRoute(APIRoute):