결정#
ARC Fleet의 백엔드 권한 정책을 다음과 같이 단순화한다:
- 쓰기/수정 (POST / PUT / PATCH / DELETE) →
getPermissionContext(auth, <resource>, 'edit')유지 - 조회/목록 (GET) →
requireAuthenticated(auth)(인증만, 리소스 권한 검사 X) - 예외 (조회에도 권한 유지): 사용자 / 사용자 그룹 / 이력(historyUser, historyRobot, historyTask). 이 검사는 AuthService 내부 메서드(listAdminUsers / listUserGroups / listUserHistories 등)에 박혀있어 컨트롤러 일괄 변경의 영향을 받지 않음.
- 권한별 화면 분기는 프론트엔드 책임: 라우트 가드(
RequirePermission), 사이드바 항목 표시(canViewPermission), 편집 버튼 disabled(canEditPermission).
Why#
- 권한이 GET까지 박혀 있어 새 화면을 만들 때마다 우회 엔드포인트(예:
ProjectLookupController)가 필요해지는 패턴이 반복됨 - 권한 모델이 깊게 박힐수록 도메인 로직이 권한 테이블에 끌려다님 → 시뮬레이터 같은 신규 흐름에서 401 폭주
- 본 시스템은 내부 운영 툴이고 도메인 데이터(로봇 / 지도 / 프로젝트)가 confidentiality-critical 하지 않음
- defense-in-depth 손실은 사용자/그룹/이력 예외로 보완 (PII / 운영 메타가 새지 않게)
How to apply#
- 신규 컨트롤러를 만들 때:
- GET →
await this.authService.requireAuthenticated(auth)한 줄 - 쓰기 →
await this.authService.getPermissionContext(auth, '<resource>', 'edit') - 사용자/그룹/이력 관련 엔드포인트는 GET에도 view 권한 체크 유지
- "권한 없어 조회 못 한다"는 에러가 반복되면 우회 컨트롤러 만들지 말고 위 정책으로 GET을 풀 것
- 새 페이지 추가 시 App.tsx에
RequirePermission permission="<key>"가드 / Sidebar에canViewPermission분기 / 페이지 내 편집 UI에canEditPermission점검 누락 없이
적용 결과 (2026-05-07)#
- 5개 컨트롤러 (
projects,admin-robots,robot-models,groups,simulations) GET들의view체크 제거 ProjectLookupController+ frontenduseProjectLookuphook 우회 완전 제거- 시뮬레이터 라우트/사이드바에
projectsview 가드 추가 (이전에 누락) - AuthService에
requireAuthenticated(token)public wrapper 추가 (getSessionContext노출) - Playwright 시뮬레이터 lifecycle 통과, 모든 GET 200, 우회 404 확인
Sagwan Revalidation 2026-05-07T07:06:50Z#
- verdict:
ok - note: [chatgpt HTTP 503] upstream connect error or disconnect/reset before headers. retried and the latest reset reason: remote connection failure, transport failure
Sagwan Revalidation 2026-05-08T07:12:33Z#
- verdict:
ok - note: 전일 결정으로 정책·예외·적용 지침에 모순이나 노후 징후가 없음.
Sagwan Revalidation 2026-05-09T07:43:07Z#
- verdict:
ok - note: 최근 결정이며 수치·링크 의존 없이 정책/적용 지침이 일관됨
Sagwan Revalidation 2026-05-10T08:10:19Z#
- verdict:
ok - note: 최근 결정 문서로 수치·링크 의존이 없고 정책 재사용에 문제 없음
Sagwan Revalidation 2026-05-11T08:29:10Z#
- verdict:
ok - note: 최근 결정이며 예외와 적용 지침이 일관되어 재사용 가능함
Sagwan Revalidation 2026-05-12T09:06:00Z#
- verdict:
ok - note: 최근 결정이며 내부 정책/코드 관례라 공개 사실 변화 영향이 작음
Sagwan Revalidation 2026-05-13T09:32:38Z#
- verdict:
ok - note: 최근 결정이며 수치·링크 의존이 없어 재사용에 문제 없어 보임
Sagwan Revalidation 2026-05-14T09:48:35Z#
- verdict:
ok - note: 내부 정책 결정으로 최신성 이슈 없고 예외·적용 기준도 일관됨
Sagwan Revalidation 2026-05-15T10:05:15Z#
- verdict:
ok - note: 전일 검증 이후 정책·수치·권장안 변화 징후가 없어 재사용 가능.
Sagwan Revalidation 2026-05-16T10:17:13Z#
- verdict:
ok - note: 내부 정책 결정 문서로 최신성 저하나 명백한 모순이 보이지 않음
Sagwan Revalidation 2026-05-17T10:42:34Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 내용의 갱신 필요 징후가 없다.
Sagwan Revalidation 2026-05-18T11:05:41Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 방식에 새 변경 징후가 없다.
Sagwan Revalidation 2026-05-19T11:34:53Z#
- verdict:
ok - note: 전일 검증 이후 정책·구현·권장안이 여전히 재사용 가능함
Sagwan Revalidation 2026-05-20T11:58:46Z#
- verdict:
ok - note: 전일 검증 이후 정책·구현·권장안의 변경 근거가 없다.
Sagwan Revalidation 2026-05-21T12:35:08Z#
- verdict:
ok - note: 이전 검증 직후라 공개 노트의 정책·적용 내용에 새 변동 징후가 없음
Sagwan Revalidation 2026-05-22T13:05:45Z#
- verdict:
ok - note: 전일 검증 이후 새 변화 근거 없고 정책·예외·적용 지침이 일관됨
Sagwan Revalidation 2026-05-23T13:43:32Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 지침 모두 재사용 가능해 보임
Sagwan Revalidation 2026-05-24T13:48:46Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 지침에 갱신 필요 신호 없음
Sagwan Revalidation 2026-05-25T14:03:46Z#
- verdict:
ok - note: 전일 검증 이후 낡은 수치·링크·practice 변화 근거가 없다.
Sagwan Revalidation 2026-05-26T14:41:40Z#
- verdict:
ok - note: 최근 결정이며 내부 정책·적용 결과에 모순이나 낡은 관행이 보이지 않음
Sagwan Revalidation 2026-05-27T15:26:43Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 지침의 변경 근거가 없어 유효함
Sagwan Revalidation 2026-05-28T15:56:26Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 방식이 낡았다는 단서가 없다.
Sagwan Revalidation 2026-05-29T16:31:58Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 지침상 갱신 필요 신호 없음
Sagwan Revalidation 2026-05-30T16:35:21Z#
- verdict:
ok - note: 전일 검증 이후 공개 근거상 변경·모순 징후가 없어 재사용 가능
Sagwan Revalidation 2026-05-31T16:47:10Z#
- verdict:
ok - note: 외부 수치·링크 의존 없이 내부 정책으로, 현재 재사용에 문제 없어 보임
Sagwan Revalidation 2026-06-01T16:55:15Z#
- verdict:
ok - note: 전일 검증 이후 바뀐 근거가 없고 정책·예외·적용 지침도 일관됨
Sagwan Revalidation 2026-06-02T20:44:42Z#
- verdict:
ok - note: 전일 검증 이후 정책·예외·적용 지침을 뒤집을 새 근거가 없다.
Sagwan Revalidation 2026-06-03T21:31:28Z#
- verdict:
ok - note: 전일 검증 이후 변동 징후 없고 내부 정책 노트로 재사용 가능
Sagwan Revalidation 2026-06-04T21:36:21Z#
- verdict:
ok - note: 전날 검증 이후 정책·예외·적용 근거가 모순 없이 재사용 가능함