Skip to content

[BE/FEAT] 앞으로 방향성 설정 #237

@7SH7

Description

@7SH7

여러 동아리의 사용을 고려하고 있으니, 권한 설정을 해주는 과정이 필요.

  • 이를 위해 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) {
    ...
}

일정

  1. 방학~2학기 1주차 까지는 위와 같은 문제 파악
  2. 9월 두번째 주차부터 문제들 해결 시작 (부족한 기능 개발 + 코드 리펙토링 + 이슈 생긴 문제들 해결)
  3. 배포 관련되어 checking
  4. spring cloud 이용하여, 각 기능 msa 처리 :: fork 떠서 개인 repo에서 작업 예정
    (main domain은 cms 한동 ? )

현재 인식 중인 문제 : 하나의 테이블에 각기 다른 type이 들어온다. 서로의 연관성 이슈 등등 (고아 node 같은 것들이 생길 수 있다는 문제)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions