-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
enhancementNew feature or requestNew feature or request
Description
여러 동아리의 사용을 고려하고 있으니, 권한 설정을 해주는 과정이 필요.
- 이를 위해 custom 권한 설정 작업을 해줘야할 것으로 생각되어짐.
문제상황
| 하나의 사용자가 여러 동아리에 가입해 있고, 각 동아리마다 회장/일반회원 등의 **역할(Role)**이 다를 수 있다는 전제
해결 전략: 커스텀 권한 체크 메서드
다음 방식으로 해결 고려
-> 기존에 사용자-동아리-권한(Role) 을 관리하는 테이블 사용
--> API 요청마다 이 관계를 확인해서 "이 사용자가 이 동아리에서 회장 맞아?"를 확인하는 커스텀 검사기
--> 그리고 이걸 @PreAuthorize로 간단하게 붙여서 API 보호!
@Component("clubPermissionEvaluator")
public class ClubPermissionEvaluator {
@Autowired
private ClubMemberRepository clubMemberRepository;
public boolean hasRole(Long clubId, String requiredRole, String userId) {
return clubMemberRepository
.findByClubIdAndUserId(clubId, userId)
.map(cm -> cm.getRole().name().equals(requiredRole))
.orElse(false);
}
}
@PreAuthorize("@clubPermissionEvaluator.hasRole(#clubId, 'PRESIDENT', authentication.name)")
@GetMapping("/clubs/{clubId}/manage")
public ResponseEntity<?> manageClub(@PathVariable Long clubId) {
...
}
일정
- 방학~2학기 1주차 까지는 위와 같은 문제 파악
- 9월 두번째 주차부터 문제들 해결 시작 (부족한 기능 개발 + 코드 리펙토링 + 이슈 생긴 문제들 해결)
- 배포 관련되어 checking
- spring cloud 이용하여, 각 기능 msa 처리 :: fork 떠서 개인 repo에서 작업 예정
(main domain은 cms 한동 ? )
현재 인식 중인 문제 : 하나의 테이블에 각기 다른 type이 들어온다. 서로의 연관성 이슈 등등 (고아 node 같은 것들이 생길 수 있다는 문제)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
Backlog