fix: 일일보고서 권한 체크를 페이지 권한 기반으로 변경 및 Edge 호환성 개선
- reports.py: role==admin 하드코딩 → check_page_access로 변경하여 reports/reports_daily 페이지 권한 보유자도 미리보기/엑셀 내보내기 가능 - page_permissions.py: 동기 헬퍼 함수 check_page_access() 추가 (기존 async API 엔드포인트를 await 없이 호출하는 버그 해결) - reports-daily.html: 에러 핸들링 강화 (401/403 구분), blob download revokeObjectURL 지연 처리 (Edge 호환) - nginx.conf: proxy_read_timeout/proxy_buffering off 추가 - reports.py: JSONResponse+jsonable_encoder로 명시적 직렬화, Content-Disposition에 ASCII 폴백 파일명 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -50,9 +50,36 @@ DEFAULT_PAGES = {
|
||||
'issues_management': {'title': '관리함', 'default_access': False},
|
||||
'issues_archive': {'title': '폐기함', 'default_access': False},
|
||||
'issues_dashboard': {'title': '현황판', 'default_access': True},
|
||||
'reports': {'title': '보고서', 'default_access': False}
|
||||
'projects_manage': {'title': '프로젝트 관리', 'default_access': False},
|
||||
'daily_work': {'title': '일일 공수', 'default_access': False},
|
||||
'reports': {'title': '보고서', 'default_access': False},
|
||||
'reports_daily': {'title': '일일보고서', 'default_access': False},
|
||||
'users_manage': {'title': '사용자 관리', 'default_access': False}
|
||||
}
|
||||
|
||||
|
||||
def check_page_access(user_id: int, page_name: str, db: Session) -> bool:
|
||||
"""동기 헬퍼: 사용자의 페이지 접근 권한 확인 (라우터 내부 호출용)"""
|
||||
# admin은 모든 페이지 접근 가능
|
||||
user = db.query(User).filter(User.id == user_id).first()
|
||||
if user and user.role == UserRole.admin:
|
||||
return True
|
||||
|
||||
# 유효하지 않은 페이지
|
||||
if page_name not in DEFAULT_PAGES:
|
||||
return False
|
||||
|
||||
# 개별 권한 확인
|
||||
permission = db.query(UserPagePermission).filter(
|
||||
UserPagePermission.user_id == user_id,
|
||||
UserPagePermission.page_name == page_name
|
||||
).first()
|
||||
if permission:
|
||||
return permission.can_access
|
||||
|
||||
# 기본 권한
|
||||
return DEFAULT_PAGES[page_name]['default_access']
|
||||
|
||||
@router.post("/page-permissions/grant")
|
||||
async def grant_page_permission(
|
||||
request: PagePermissionRequest,
|
||||
|
||||
Reference in New Issue
Block a user