Skip to content

Conversation

@yewonahn
Copy link
Collaborator

@yewonahn yewonahn commented Nov 3, 2024

📍 PR 타입 (하나 이상 선택)

  • 기능 추가
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트
  • 기타 사소한 수정

❗️ 관련 이슈 링크

Close #396

📌 개요

  • HandlerMethodArgumentResolver 구현

🔁 변경 사항

  • 기존엔 @authuser를 통해 user 객체를 추출했습니다. 특정 모임에서의 요청인 API의 경우, 요청 uri의 @PathVariable moimId에 각 요청에 필요한 유저의 모임 권한에 맞는 어노테이션들 (ex. @CheckAdminValidation, @CheckOwnerValidation, @UserMoimValidaton)을 통해 해당 유저가 해당 모임의 관리자, 모임장, 모임 멤버가 맞는지 검증을 진행했습니다. 한명의 유저가 여러 모임 스페이스에 가입할 수 있고, 각 모임마다 moimRole (모임에서의 권한) 이 다르기 때문에 모임에서의 권한 처리는 커스텀 어노테이션에서 처리했었습니다. 그리고 그 권한 검증 과정에서 해당 어노테이션들에서 userMoim을 조회하는데, 이후 서비스 로직에선 user 객체와 moimId를 받아서 moim을 조회하는 쿼리가 추가적으로 나가게 됐습니다. 이를 개선하고, 서비스 로직에서의 코드 개선을 위해 각 요청의 권한에 맞는 UserMoim을 추출하는 HandlerMethodArgumentResolver들을 구현했습니다. resolver들에서 authentication을 통해 userId를, 요청 uri를 통해 moimId를 받고 각 역할에 맞는 moimRole에 대해서, 해당하는 userMoim을 추출하면서 해당 userMoim이 없는 경우 권한이 없음을 판별하고, userMoim이 존재하는 경우 해당 객체를 리턴하도록 구현했습니다.

📸 스크린샷

모임의 특정 월의 일정을 조회하는 API에 @AuthUserMoim을 적용한 테스트 결과입니다

  • 기존 쿼리
스크린샷 2024-11-03 오후 8 51 15
  • 적용 이후 쿼리
스크린샷 2024-11-03 오후 8 53 23

👀 기타 더 이야기해볼 점

✅ 체크 리스트

  • PR 템플릿에 맞추어 작성했어요.
  • 변경 내용에 대한 테스트를 진행했어요.
  • 프로그램이 정상적으로 동작해요.
  • PR에 적절한 라벨을 선택했어요.
  • 불필요한 코드는 삭제했어요.

@yewonahn yewonahn self-assigned this Nov 3, 2024
@yewonahn yewonahn changed the title ✨ Feature: HandlerMethodArgumentResolver 구현 ♻️ Refactor: HandlerMethodArgumentResolver 구현 Nov 3, 2024
- 작동 테스트를 위해 적용해둔 부분 제거
- 에러 충돌 고려하여 프론트 작업 전 기존 uri로 유지
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

♻️ [Refactor] HandlerMethodArgumentResolver 구현

3 participants