From d5bc23d488da726964661b19f1f24fc5b75a4aa7 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 26 Jun 2026 18:34:41 +0800 Subject: [PATCH] =?UTF-8?q?P2-1:=20=E7=A7=BB=E9=99=A4=20projects.py=20?= =?UTF-8?q?=E4=B8=AD=E9=87=8D=E5=A4=8D=E7=9A=84=20=5Frequire=5Fworkspace?= =?UTF-8?q?=5Fmember=20=E5=87=BD=E6=95=B0=EF=BC=8C=E4=BD=BF=E7=94=A8=20per?= =?UTF-8?q?missions.py=20=E4=B8=AD=E7=9A=84=E5=85=B1=E4=BA=AB=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/app/api/routes/projects.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) 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(