diff --git a/backend/routers/inbox.py b/backend/routers/inbox.py index b57be18..b693ca1 100644 --- a/backend/routers/inbox.py +++ b/backend/routers/inbox.py @@ -10,6 +10,7 @@ from database.schemas import ( IssueStatusUpdateRequest, ModificationLogEntry ) from routers.auth import get_current_user, get_current_admin +from routers.page_permissions import check_page_access router = APIRouter(prefix="/api/inbox", tags=["inbox"]) @@ -40,12 +41,15 @@ async def get_inbox_issues( async def dispose_issue( issue_id: int, disposal_request: IssueDisposalRequest, - current_user: User = Depends(get_current_admin), # 관리자만 폐기 가능 + current_user: User = Depends(get_current_user), # 수신함 권한이 있는 사용자 db: Session = Depends(get_db) ): """ 부적합 폐기 처리 """ + # 수신함 페이지 권한 확인 + if not check_page_access(current_user.id, 'issues_inbox', db): + raise HTTPException(status_code=403, detail="수신함 접근 권한이 없습니다.") # 부적합 조회 issue = db.query(Issue).filter(Issue.id == issue_id).first() if not issue: @@ -118,12 +122,15 @@ async def dispose_issue( async def review_issue( issue_id: int, review_request: IssueReviewRequest, - current_user: User = Depends(get_current_admin), # 관리자만 검토 가능 + current_user: User = Depends(get_current_user), # 수신함 권한이 있는 사용자 db: Session = Depends(get_db) ): """ 부적합 검토 및 수정 """ + # 수신함 페이지 권한 확인 + if not check_page_access(current_user.id, 'issues_inbox', db): + raise HTTPException(status_code=403, detail="수신함 접근 권한이 없습니다.") # 부적합 조회 issue = db.query(Issue).filter(Issue.id == issue_id).first() if not issue: @@ -215,12 +222,15 @@ async def review_issue( async def update_issue_status( issue_id: int, status_request: IssueStatusUpdateRequest, - current_user: User = Depends(get_current_admin), # 관리자만 상태 변경 가능 + current_user: User = Depends(get_current_user), # 수신함 권한이 있는 사용자 db: Session = Depends(get_db) ): """ 부적합 최종 상태 결정 (진행 중 / 완료) """ + # 수신함 페이지 권한 확인 + if not check_page_access(current_user.id, 'issues_inbox', db): + raise HTTPException(status_code=403, detail="수신함 접근 권한이 없습니다.") # 부적합 조회 issue = db.query(Issue).filter(Issue.id == issue_id).first() if not issue: diff --git a/backend/routers/issues.py b/backend/routers/issues.py index 2cc61f1..f812072 100644 --- a/backend/routers/issues.py +++ b/backend/routers/issues.py @@ -73,10 +73,21 @@ async def read_all_issues_admin( skip: int = 0, limit: int = 100, status: Optional[IssueStatus] = None, - current_admin: User = Depends(get_current_admin), + current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): - """관리자 전용: 모든 부적합 조회""" + """이슈 관리 권한이 있는 사용자: 모든 부적합 조회""" + # 이슈 관리 페이지 권한 확인 (관리함, 폐기함 등에서 사용) + from routers.page_permissions import check_page_access + + # 관리자이거나 이슈 관리 권한이 있는 사용자만 접근 가능 + if (current_user.role != 'admin' and + not check_page_access(current_user.id, 'issues_manage', db) and + not check_page_access(current_user.id, 'issues_inbox', db) and + not check_page_access(current_user.id, 'issues_management', db) and + not check_page_access(current_user.id, 'issues_archive', db)): + raise HTTPException(status_code=403, detail="이슈 관리 권한이 없습니다.") + query = db.query(Issue) if status: