Skip to content

SystemRole 다중화 #141

Merged
chan99k merged 8 commits intomainfrom
learning-manager-101_system-role-multiplexing
Dec 14, 2025
Merged

SystemRole 다중화 #141
chan99k merged 8 commits intomainfrom
learning-manager-101_system-role-multiplexing

Conversation

@chan99k
Copy link
Collaborator

@chan99k chan99k commented Dec 14, 2025

💡 Motivation and Context

출석 수정 기능에서 좀더 세밀한 관리자 권한 검증이 필요한 것을 확인하였고, 이에 SystemRole 을 다분화 하였습니다.


🔨 Modified

  • Member 도메인에서 역할(Role)을 분리하여 별도 테이블로 관리
  • SystemAuthorizationPort 인터페이스를 통한 런타임 권한 조회 방식 도입
  • 시스템 역할이 변경되더라도, JWT 를 재발급할 필요없이 그대로 재사용 가능 (DB 테이블에서 조회해 오므로)
  Request → JwtAuthFilter → SystemAuthorizationPort.getRoles()
  ↓
  JpaSystemAuthorizationAdapter
  ↓
  member_system_role 테이블


🌟 More

  • 레디스 캐싱 추가 필요 (매번 DB 조회 발생하므로)

📋 체크리스트

  • 추가/변경에 대한 테스트
  • 코드 컨벤션

🤟🏻 PR로 완료된 이슈

closes #

- `SystemRole` enum에 계층 레벨 정보 추가
- 시스템 역할 관리 관련 JPA 어댑터 및 포트 추가
- 역할 계층 구조 관리 기능(SystemRoleHierarchy) 구현
- 회원 역할 관리용 엔티티(MemberSystemRoleEntity) 및 레포지토리 추가
- 기존 role 데이터를 member_system_role로 마이그레이션하는 SQL 스크립트 작성
- `SystemRole` 및 관련 메서드, 필드 제거
- 회원 도메인 및 테스트에서 역할 관련 코드 삭제
- 역할 매핑 관련 JPA 어댑터 및 엔티티 수정
- 더 이상 필요하지 않은 역할 테스트 코드 제거
- Access Token 발급 시 역할 정보 제거
- `JwtProvider`에서 역할 기반 클레임 처리 코드 삭제
- `JwtAuthenticationFilter`에서 역할 조회를 `SystemAuthorizationPort` 기반으로 수정
- 관련 테스트 코드 업데이트 및 불필요한 역할 클레임 검증 제거
- 회원 조회 및 역할 검증 기능을 SystemAuthorizationPort 기반으로 대체
- MemberQueryRepository 의존성 제거 및 관련 서비스 리팩토링
- 불필요한 회원 조회 및 예외 처리 코드 삭제
- 관련 테스트 코드 수정 및 불필요한 테스트 제거
- 동일한 상태로 수정 요청 시 실패 테스트 추가
- 대기 중인 수정 요청이 존재할 경우 실패 테스트 추가
- `JpaConfig`에 `SystemRoleHierarchy` Bean 등록
- 역할 계층 관련 의존성 주입 및 설정 추가
@github-actions
Copy link

github-actions bot commented Dec 14, 2025

테스트 커버리지 리포트

Overall Project 66.37% -0.7% 🍏
Files changed 67.16% 🍏

File Coverage
SessionUpdateService.java 100% 🍏
SessionCreationService.java 100% 🍏
SessionDeletionService.java 100% 🍏
IssueTokenService.java 100% 🍏
RefreshAccessTokenService.java 100% 🍏
JwtProvider.java 100% 🍏
JwtProviderAdapter.java 100% 🍏
JwtAuthenticationFilter.java 100% 🍏
CourseCreationService.java 100% 🍏
SystemRole.java 100% 🍏
SystemRoleHierarchy.java 100% 🍏
Member.java 84.42% 🍏
MemberStatusChangeService.java 81.43% 🍏
MemberSystemRoleEntity.java 16.67% -83.33%
MemberEntity.java 13.56% 🍏
JpaConfig.java 0% -30.77%
MemberMapper.java 0% 🍏
AttendanceSecurity.java 0% -11.6%
JpaSystemAuthorizationAdapter.java 0%

- `SystemRoleHierarchy`에 대한 단위 테스트 코드 작성
@chan99k chan99k added 🐕‍🦺 backend 백엔드 로직 🛠️ refactor 코드 리팩터링 labels Dec 14, 2025
@chan99k chan99k merged commit 1c6738f into main Dec 14, 2025
4 checks passed
@chan99k chan99k deleted the learning-manager-101_system-role-multiplexing branch December 14, 2025 05:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🛠️ refactor 코드 리팩터링 🐕‍🦺 backend 백엔드 로직

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant