유니티 개발자 커뮤니티 비빔밥 웹사이트 프로젝트
Go to file
이정수 941f9fb128 feat(rbac): W1 거버넌스/RBAC — 관리자 콘솔·권한 게이트·세션 epoch 전파
- role(ADMIN/SUBADMIN/USER) + user_permissions join 권한 모델 도입. ADMIN 암묵 전권, SUBADMIN 부여 키만, USER 0.
- permissions 카탈로그(DB 테이블) + PermissionKeys enum 단일 정의처. 부팅 시 PermissionCatalogVerifier 가 enum→DB 멱등 시드·불일치 경고(코드↔DB 동기화 계약).
- PermissionGate(판정 코어) + RbacInterceptor(/admin/** ADMIN 게이트) + InterceptorConfig. 미인증 401/redirect·미인가 403·CSRF 실패 403 정책 확정.
- AdminConsoleController 4액션(임명/권한토글/강등/운영진 목록) + admin-console.jsp. 상태변경 전부 CsrfTokens.isValid 선검증.
- users.permissions_epoch 스탬프 + 요청당 PK 단일조회 대조로 권한 회수 즉시 반영. Spring Session 부재(톰캣 in-memory)로 타 세션 직접 무효화 불가한 제약을 epoch 대조로 우회 — 회수 우회 차단.
- comment/review 모더레이션 ROLE_ADMIN.equals(role) → PermissionGate.canModerate(ADMIN OR SUBADMIN+CONTENT_MODERATE) 흡수. ADMIN 통과 동작 회귀 보존.
- rbac_audit_log 임명/강등/부여/회수 대칭 기록.
- DDL: docs/rbac-ddl.sql(멱등·비파괴, 기존 전원 role=USER 호환), db/bootstrap-admin.sql(최초 ADMIN 수동 seed — 자동 승격 경로 부재).

검증: ./mvnw -o test 65/65 GREEN (PermissionGateTest 7 · AdminConsoleControllerTest 13 · GameComment/ReviewControllerTest 흡수 회귀 PASS). DDL 로컬 적용·L2(DB 방언 계약)·L3(스모크)는 미수행 — 별도 결정으로 분리.

설계: .atp/work-session/20260622-180054/implementation/W1-design.md
요구: .atp/work-session/20260622-180054/research/W1-requirements.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 10:38:57 +09:00
.atp/work-session docs(dev): 검증 회고 교훈 반영 — DB-방언 계약 L2 + stale 빌드 가드 2026-06-22 17:58:47 +09:00
.mvn/wrapper Prepare public repository 2026-05-03 16:13:32 +09:00
.serena chore(dev): W3-2 테스트용 dev seed + serena memory 2026-06-18 14:35:33 +09:00
certs feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
db feat(rbac): W1 거버넌스/RBAC — 관리자 콘솔·권한 게이트·세션 epoch 전파 2026-06-23 10:38:57 +09:00
docs feat(rbac): W1 거버넌스/RBAC — 관리자 콘솔·권한 게이트·세션 epoch 전파 2026-06-23 10:38:57 +09:00
src feat(rbac): W1 거버넌스/RBAC — 관리자 콘솔·권한 게이트·세션 epoch 전파 2026-06-23 10:38:57 +09:00
.dockerignore feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
.env.example feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
.gitattributes Prepare public repository 2026-05-03 16:13:32 +09:00
.gitignore feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
CLAUDE.md docs(dev): 비-메인스트림 브랜치 커밋 표준 승인 정책 추가 2026-06-22 16:59:09 +09:00
Dockerfile feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
docker-compose.yml feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
mvnw feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00
mvnw.cmd Prepare public repository 2026-05-03 16:13:32 +09:00
pom.xml 사이트 이용 약관 처리 2026-05-03 23:01:42 +09:00