Skip to content

패키지 정리 및 로그인 유저 확인 로직 수정#20

Merged
sudhdkso merged 15 commits intodevelopfrom
main
Feb 18, 2026
Merged

패키지 정리 및 로그인 유저 확인 로직 수정#20
sudhdkso merged 15 commits intodevelopfrom
main

Conversation

@sudhdkso
Copy link
Copy Markdown
Contributor

@sudhdkso sudhdkso commented Feb 18, 2026

#️⃣연관된 이슈

ex) #이슈번호, #이슈번호

🔀반영 브랜치

ex) feat/#23-user-signup -> develop

🔧변경 사항

코드에 추가사항 및 변경사항을 작성해주세요.

💬리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요
ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요

Summary by CodeRabbit

릴리스 노트

  • New Features

    • Spring Security 기반 인증 시스템 도입으로 보안 강화
    • 로그인 사용자 정보 자동 인식 기능 추가
  • Improvements

    • API 요청 인터페이스 단순화 (불필요한 필드 제거)
    • CI/CD 파이프라인 최적화로 배포 속도 개선
  • Chores

    • 모듈 구조 개편 및 정리
    • 내부 테스트 업데이트

@sudhdkso sudhdkso merged commit d6b983b into develop Feb 18, 2026
3 of 4 checks passed
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 18, 2026

Caution

Review failed

The pull request is closed.

개요

이 PR은 도메인-중심 구조에서 계층화된 아키텍처(프레젠테이션, 애플리케이션, 도메인, 인프라)로의 대규모 패키지 재구성을 진행합니다. JWT 및 보안 관련 클래스를 auth.infrastructure.security로 이동하고, 사용자/이미지/보상 관련 클래스를 각각의 모듈로 재정렬합니다. 또한 Settlement에서 비밀번호 필드를 제거하고, JwtService를 LoginUserArgumentResolver로 대체합니다.

변경 사항

격(Cohort) / 파일(s) 요약
CI/CD 및 Docker 설정
.github/workflows/cicd.yml, Dockerfile, src/docs/asciidoc/*
Gradle asciidoctor 테스트 통합, 기본 이미지를 openjdk에서 eclipse-temurin으로 변경, REST Docs HTML 출력 복사 추가, 배포 스크립트에서 cdsudo 제거. 문서 파일 재구성(appointmentMember.adoc 삭제, member.adoc 추가).
인증 레이어 재구성
src/main/java/com/dnd/moddo/auth/application/*, src/main/java/com/dnd/moddo/auth/infrastructure/security/*, src/main/java/com/dnd/moddo/auth/model/*, src/main/java/com/dnd/moddo/auth/presentation/response/*
JWT 관련 클래스를 global.jwt.*에서 auth.infrastructure.security.*로 이동. AuthDetailsService, JwtFilter, JwtConstants, JwtProvider, JwtAuth, JwtUtil 재배치. AuthDetails를 User 엔티티 의존성 제거하고 userId/email/role 필드로 리팩토링. AuthController와 RefreshTokenService 이동 및 import 경로 업데이트.
사용자 도메인 모듈화
src/main/java/com/dnd/moddo/user/application/*, src/main/java/com/dnd/moddo/user/domain/*, src/main/java/com/dnd/moddo/user/presentation/request/*, src/main/java/com/dnd/moddo/user/infrastructure/*
User 엔티티, Authority 열거형, UserRepository, 요청 DTO를 새로운 모듈 구조로 이동. CommandUserService, QueryUserService 재배치. domain.user.entity.type.Authority 제거 및 user.domain.Authority 신규 생성.
이미지 서비스 모듈화
src/main/java/com/dnd/moddo/image/application/*, src/main/java/com/dnd/moddo/image/domain/*, src/main/java/com/dnd/moddo/image/presentation/response/*, src/main/java/com/dnd/moddo/image/infrastructure/*
Image 엔티티, ImageRepository, 이미지 처리 서비스를 새로운 모듈로 이동. CommandImageService 신규 생성, ImageCreator/ImageUpdater/ImageReader 재배치. 응답 DTO(ImageResponse, TempImageResponse, CharacterResponse) 프레젠테이션 계층으로 이동.
보상(캐릭터) 모듈화
src/main/java/com/dnd/moddo/reward/application/*, src/main/java/com/dnd/moddo/reward/domain/character/*, src/main/java/com/dnd/moddo/reward/infrastructure/*
Character 엔티티, CharacterRepository, QueryCharacterService, CharacterReader를 reward 모듈로 이동. 이미지 및 보상 도메인 간의 의존성 재정렬.
정산(Settlement) 리팩토링
src/main/java/com/dnd/moddo/event/domain/settlement/Settlement.java, src/main/java/com/dnd/moddo/event/presentation/request/SettlementRequest.java, src/main/java/com/dnd/moddo/event/application/impl/SettlementCreator.java, src/main/java/com/dnd/moddo/event/presentation/*.java
Settlement에서 password 필드 제거 및 characterId 필드 추가. SettlementRequest 생성자에서 password 파라미터 제거. BCryptPasswordEncoder 의존성 제거. 컨트롤러에서 JwtService 제거하고 LoginUserInfo를 통한 사용자 인증으로 대체.
보안 설정 및 필터
src/main/java/com/dnd/moddo/auth/infrastructure/security/LoginUser.java, src/main/java/com/dnd/moddo/auth/infrastructure/security/LoginUserArgumentResolver.java, src/main/java/com/dnd/moddo/common/config/SecurityConfig.java, src/main/java/com/dnd/moddo/common/config/WebConfig.java, src/main/java/com/dnd/moddo/common/support/aop/GroupPermissionAspect.java
LoginUser 어노테이션 및 LoginUserArgumentResolver 신규 추가. JwtFilter 재배치. WebConfig에 LoginUserArgumentResolver 등록. GroupPermissionAspect를 SecurityContext 기반으로 리팩토링하여 JwtService 제거.
로깅 클라이언트
src/main/java/com/dnd/moddo/common/logging/DiscordErrorFeignClient.java, src/main/java/com/dnd/moddo/common/logging/DiscordStatsFeignClient.java
DiscordStatsFeignClient 삭제. DiscordErrorFeignClient 설정 수정(name, url 파라미터 변경).
제거된 기존 코드
src/main/java/com/dnd/moddo/global/jwt/..., src/main/java/com/dnd/moddo/global/security/auth/..., src/main/java/com/dnd/moddo/domain/auth/..., src/main/java/com/dnd/moddo/domain/image/..., src/main/java/com/dnd/moddo/domain/user/entity/type/Authority.java
기존 JWT 관련 클래스(JwtFilter, JwtConstants, JwtService 등), 구 인증 클래스(AuthDetailsService@global), 구 이미지 서비스/DTO, 구 Authority 열거형 제거.
테스트 업데이트
src/test/java/..., src/test/resources/application.yml
모든 테스트 파일의 import 경로 업데이트. SettlementRequest 생성자 호출 수정(password 제거). LoginUserArgumentResolver 모킹 추가. CacheIntegrationTest 삭제. 테스트 설정에서 JwtService 제거 및 LoginUserArgumentResolver 추가.
구성 서브모듈
src/main/resources/config
서브모듈 참조 커밋 업데이트(97c50ae → 0f17f27).

시퀀스 다이어그램

로그인 사용자 인증 흐름의 변화를 보여주는 다이어그램입니다:

sequenceDiagram
    participant Client
    participant JwtFilter
    participant JwtUtil
    participant JwtAuth
    participant SecurityContext
    participant Controller
    participant LoginUserArgumentResolver

    Client->>JwtFilter: HTTP 요청 (토큰 포함)
    JwtFilter->>JwtUtil: resolveToken()
    JwtUtil-->>JwtFilter: 토큰 반환
    JwtFilter->>JwtAuth: getAuthentication(token, tokenType)
    JwtAuth-->>JwtFilter: AuthDetails 반환
    JwtFilter->>SecurityContext: setAuthentication()
    JwtFilter->>Controller: doFilter() 계속
    Controller->>LoginUserArgumentResolver: `@LoginUser` 파라미터 처리
    LoginUserArgumentResolver->>SecurityContext: getAuthentication()
    SecurityContext-->>LoginUserArgumentResolver: AuthDetails 반환
    LoginUserArgumentResolver-->>Controller: LoginUserInfo 주입
    Controller-->>Client: 응답 반환
Loading

이미지 처리 흐름의 변화:

sequenceDiagram
    participant Client
    participant ImageController
    participant CommandImageService
    participant ImageCreator
    participant ImageRepository
    participant ImageUpdater

    Client->>ImageController: 이미지 업로드
    ImageController->>CommandImageService: uploadTempImage()
    CommandImageService->>ImageCreator: createTempImage()
    ImageCreator-->>CommandImageService: 임시 경로 반환
    CommandImageService->>ImageRepository: save(Image)
    ImageRepository-->>CommandImageService: 저장 완료
    CommandImageService-->>ImageController: TempImageResponse 반환
    
    Client->>ImageController: 이미지 확정
    ImageController->>CommandImageService: uploadFinalImage()
    CommandImageService->>ImageRepository: findByUniqueKeyIn()
    ImageRepository-->>CommandImageService: Image 엔티티 반환
    CommandImageService->>ImageUpdater: moveToBucket()
    ImageUpdater-->>CommandImageService: 최종 경로 반환
    CommandImageService->>ImageRepository: delete()
    CommandImageService-->>ImageController: ImageResponse 반환
Loading

예상 코드 리뷰 난이도

🎯 4 (복잡) | ⏱️ ~45분

관련 가능 PR

제안하는 리뷰어

  • choyeseol

🐰 패키지를 정렬하고 계층을 쌓아,
인증의 흐름을 새롭게 다시 그으니,
비밀번호는 떠나고 토큰만 남아,
모듈의 경계는 명확하고,
코드의 집은 이제 정말 예뻐! ✨

✨ Finishing Touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch main

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

📝 테스트 커버리지 리포트입니다!

File Coverage [87%] 🍏
ImageUpdater.java 100% 🍏
ImageCreator.java 100% 🍏
Authority.java 100% 🍏
User.java 100% 🍏
RefreshTokenService.java 100% 🍏
Character.java 100% 🍏
CommandImageService.java 100% 🍏
SettlementCreator.java 100% 🍏
MemberCreator.java 100% 🍏
CommandSettlementService.java 100% 🍏
CharacterNotFoundException.java 100% 🍏
InvalidUniqueKeyException.java 100% 🍏
S3SaveException.java 100% 🍏
QueryUserService.java 100% 🍏
CommandUserService.java 100% 🍏
Characters.java 100% 🍏
CharacterReader.java 100% 🍏
Image.java 100% 🍏
UserCreator.java 100% 🍏
QueryCharacterService.java 100% 🍏
AuthService.java 95.12% 🍏
KakaoClient.java 89.22% 🍏
Settlement.java 85.71% 🍏
UserNotFoundException.java 50%
UserReader.java 50%
ImageReader.java 0%
AuthDetailsService.java 0%
Total Project Coverage 91.37% 🍏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant