diff --git a/apps/api/app/api/routes/projects.py b/apps/api/app/api/routes/projects.py index 5939c53ee..e77c9ab36 100644 --- a/apps/api/app/api/routes/projects.py +++ b/apps/api/app/api/routes/projects.py @@ -7,6 +7,7 @@ from app.schemas.project import ( ListProjectsResponse, ProjectResponse, ) +from app.api.routes.permissions import require_workspace_member from fastapi import APIRouter, Depends, HTTPException, status from packages.application import ( @@ -20,16 +21,6 @@ from packages.ports.workspace_member_repository import WorkspaceMemberRepository router = APIRouter() -def _require_workspace_member( - workspace_id: str, - authenticated_user: AuthenticatedUser, - workspace_member_repository: WorkspaceMemberRepository, -) -> None: - member = workspace_member_repository.find_by_workspace_and_user(workspace_id, authenticated_user.user.id) - if member is None: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Workspace access denied") - - def _to_project_response(item) -> ProjectResponse: return ProjectResponse( id=item.id, @@ -50,7 +41,7 @@ def get_project( project = use_case.execute(project_id) if project is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Project not found") - _require_workspace_member(project.workspace_id, authenticated_user, workspace_member_repository) + require_workspace_member(project.workspace_id, authenticated_user, workspace_member_repository) return _to_project_response(project) @@ -61,7 +52,7 @@ def list_projects( project_repository: Any = Depends(get_project_repository), workspace_member_repository: WorkspaceMemberRepository = Depends(get_workspace_member_repository), ) -> ListProjectsResponse: - _require_workspace_member(workspace_id, authenticated_user, workspace_member_repository) + require_workspace_member(workspace_id, authenticated_user, workspace_member_repository) use_case = ListProjectsUseCase(project_repository) projects = use_case.execute(workspace_id) return ListProjectsResponse(items=[_to_project_response(item) for item in projects]) @@ -74,7 +65,7 @@ def create_project( project_repository: Any = Depends(get_project_repository), workspace_member_repository: WorkspaceMemberRepository = Depends(get_workspace_member_repository), ) -> ProjectResponse: - _require_workspace_member(request.workspace_id, authenticated_user, workspace_member_repository) + require_workspace_member(request.workspace_id, authenticated_user, workspace_member_repository) use_case = CreateProjectUseCase(project_repository) project = use_case.execute( CreateProjectCommand(