Skip to content

[User] 마이페이지 조회, 수정, 탈퇴 구현#59

Merged
Creamcheesepie merged 11 commits into
mainfrom
feat/#58
Dec 15, 2025
Merged

[User] 마이페이지 조회, 수정, 탈퇴 구현#59
Creamcheesepie merged 11 commits into
mainfrom
feat/#58

Conversation

@larama-C
Copy link
Copy Markdown
Collaborator

@larama-C larama-C commented Dec 14, 2025

🔗 관련 이슈

관련된 이슈 번호를 연결해주세요.
Close #이슈번호 를 쓰면 PR merge 시 자동으로 close 됩니다.

🚀 PR 개요

이 PR이 어떤 변경을 포함하고 있는지 간단히 설명해주세요.

  • 마이페이지(내 정보) 기능 구현을 위한 사용자 정보 조회·수정·탈퇴 API를 추가했습니다.
  • 닉네임, 비밀번호, 프로필 이미지 수정 기능을 각각 분리된 API로 구현했습니다.
  • 사용자 탈퇴 및 비밀번호 변경 시 인증 토큰을 함께 정리하도록 처리했습니다.
  • 사용자 상태(UserStatus) 및 삭제 여부에 따른 인증/인가 로직을 보완했습니다.

📌 변경 사항

주요 변경 내용을 체크리스트 형태로 정리해주세요.

  • 기능 추가
  • 버그 수정
  • 리팩터링
  • 문서 업데이트
  • 테스트 추가/수정

🧪 테스트 방법

변경된 내용을 어떻게 테스트했는지 구체적으로 적어주세요.

📸 스크린샷 (선택)

UI 변경 또는 시각적으로 확인할 수 있는 변경이 있다면 첨부해주세요.

⚠️ 참고 사항

리뷰어가 알아야 할 사항이 있다면 자유롭게 작성해주세요.

  • UserStatus(Enum)에 DELETED 값이 추가되어, 로컬 H2 사용 시 스키마 갱신이 필요합니다!
    관련 링크 : 링크
  • 프로필 이미지 업로드는 FileStorageService 인터페이스 기반의 임시 구현 상태입니다.
  • 이전 작업 브랜치가 아직 PR에 올라와있는 상태여서 이전 작업 PR의 커밋도 같이 보이는 상태입니다.

@larama-C larama-C self-assigned this Dec 14, 2025
@github-actions
Copy link
Copy Markdown

Test Results

1 tests  ±0   1 ✅ ±0   0s ⏱️ ±0s
1 suites ±0   0 💤 ±0 
1 files   ±0   0 ❌ ±0 

Results for commit 84f01fb. ± Comparison against base commit 7513b96.

@github-actions
Copy link
Copy Markdown

⭐ JaCoCo Coverage

Line Coverage: 10.61%

📄 Coverage Details

Overall Line Coverage: 10.53% (81 covered / 769 lines)

Package Summary (lowest first)
Package Line % Covered Missed
com/back/web7_9_codecrete_be/domain/chats/controller 0.00% 0 0
com/back/web7_9_codecrete_be/domain/location/service 0.00% 0 0
com/back/web7_9_codecrete_be/domain/chats/service 0.00% 0 0
com/back/web7_9_codecrete_be/domain/plans/controller 0.00% 0 10
com/back/web7_9_codecrete_be/domain/location/controller 0.00% 0 0
com/back/web7_9_codecrete_be/global/rsData 0.00% 0 11
com/back/web7_9_codecrete_be/domain/location/entity 0.00% 0 0
com/back/web7_9_codecrete_be/domain/auth/entity 0.00% 0 0
com/back/web7_9_codecrete_be/domain/auth/service 0.00% 0 71
com/back/web7_9_codecrete_be/domain/plans/service 0.00% 0 80
com/back/web7_9_codecrete_be/domain/users/controller 0.00% 0 16
com/back/web7_9_codecrete_be/domain/email/entity 0.00% 0 6
com/back/web7_9_codecrete_be/domain/users/service 0.00% 0 32
com/back/web7_9_codecrete_be/domain/auth/controller 0.00% 0 20
com/back/web7_9_codecrete_be/domain/concerts/controller 0.00% 0 3
com/back/web7_9_codecrete_be/domain/artists/controller 0.00% 0 0
com/back/web7_9_codecrete_be/domain/artists/service 0.00% 0 0
com/back/web7_9_codecrete_be/global/aspect 0.00% 0 4
com/back/web7_9_codecrete_be/domain/email/service 2.13% 1 46
com/back/web7_9_codecrete_be/domain/concerts/service 6.60% 13 184
com/back/web7_9_codecrete_be/domain/concerts/entity 8.57% 3 32
com/back/web7_9_codecrete_be/global/rq 12.90% 4 27
com/back/web7_9_codecrete_be/global/security 17.71% 17 79
com/back/web7_9_codecrete_be/domain/plans/entity 20.00% 11 44
com/back/web7_9_codecrete_be/domain/users/entity 27.59% 8 21
com/back/web7_9_codecrete_be/global/storage 33.33% 1 2
com/back/web7_9_codecrete_be/domain/chats/entity 100.00% 1 0
com/back/web7_9_codecrete_be/global/doc 100.00% 17 0
com/back/web7_9_codecrete_be/domain/artists/entity 100.00% 5 0
Lowest Covered Classes (Top 20)
Class Line % Covered Missed
com.back.web7_9_codecrete_be.domain.plans.service.PlanService 0.00% 0 80
com.back.web7_9_codecrete_be.domain.auth.service.AuthService 0.00% 0 44
com.back.web7_9_codecrete_be.global.security.JwtTokenProvider 0.00% 0 37
com.back.web7_9_codecrete_be.domain.users.service.UserService 0.00% 0 32
com.back.web7_9_codecrete_be.domain.auth.service.TokenService 0.00% 0 27
com.back.web7_9_codecrete_be.domain.users.entity.User 0.00% 0 21
com.back.web7_9_codecrete_be.domain.auth.controller.AuthController 0.00% 0 20
com.back.web7_9_codecrete_be.domain.concerts.entity.Concert 0.00% 0 18
com.back.web7_9_codecrete_be.domain.plans.entity.Route 0.00% 0 18
com.back.web7_9_codecrete_be.domain.plans.entity.Plan 0.00% 0 16
com.back.web7_9_codecrete_be.domain.users.controller.UserController 0.00% 0 16
com.back.web7_9_codecrete_be.global.rsData.RsData 0.00% 0 11
com.back.web7_9_codecrete_be.domain.plans.controller.PlanController 0.00% 0 10
com.back.web7_9_codecrete_be.domain.plans.entity.PlanParticipant 0.00% 0 10
com.back.web7_9_codecrete_be.global.security.CustomUserDetail 0.00% 0 10
com.back.web7_9_codecrete_be.domain.concerts.entity.ConcertPlace 0.00% 0 9
com.back.web7_9_codecrete_be.domain.email.entity.VerificationCode 0.00% 0 6
com.back.web7_9_codecrete_be.domain.concerts.entity.TicketOffice 0.00% 0 5
com.back.web7_9_codecrete_be.global.aspect.ResponseAspect 0.00% 0 4
com.back.web7_9_codecrete_be.global.security.CustomUserDetailService 0.00% 0 3
Changed Classes (from this PR)
Source (PR) Class Prefix Line % Covered Missed
src/main/java/com/back/web7_9_codecrete_be/domain/auth/service/AuthService.java com.back.web7_9_codecrete_be.domain.auth.service.AuthService 0.00% 0 44
src/main/java/com/back/web7_9_codecrete_be/domain/users/service/UserService.java com.back.web7_9_codecrete_be.domain.users.service.UserService 0.00% 0 32
src/main/java/com/back/web7_9_codecrete_be/domain/auth/service/TokenService.java com.back.web7_9_codecrete_be.domain.auth.service.TokenService 0.00% 0 27
src/main/java/com/back/web7_9_codecrete_be/domain/auth/controller/AuthController.java com.back.web7_9_codecrete_be.domain.auth.controller.AuthController 0.00% 0 20
src/main/java/com/back/web7_9_codecrete_be/domain/users/controller/UserController.java com.back.web7_9_codecrete_be.domain.users.controller.UserController 0.00% 0 16
src/main/java/com/back/web7_9_codecrete_be/domain/auth/dto/request/EmailSendRequest.java com.back.web7_9_codecrete_be.domain.auth.dto.request.EmailSendRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/auth/dto/request/EmailVerifyRequest.java com.back.web7_9_codecrete_be.domain.auth.dto.request.EmailVerifyRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/auth/dto/request/LoginRequest.java com.back.web7_9_codecrete_be.domain.auth.dto.request.LoginRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/auth/dto/request/SignupRequest.java com.back.web7_9_codecrete_be.domain.auth.dto.request.SignupRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/auth/entity/RefreshToken.java com.back.web7_9_codecrete_be.domain.auth.entity.RefreshToken 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/auth/repository/RefreshTokenRedisRepository.java com.back.web7_9_codecrete_be.domain.auth.repository.RefreshTokenRedisRepository 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/auth/repository/RefreshTokenRepository.java com.back.web7_9_codecrete_be.domain.auth.repository.RefreshTokenRepository 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/email/repository/VerificationCodeRedisRepository.java com.back.web7_9_codecrete_be.domain.email.repository.VerificationCodeRedisRepository 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/email/repository/VerifiedEmailRepository.java com.back.web7_9_codecrete_be.domain.email.repository.VerifiedEmailRepository 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/users/dto/request/UserUpdateNicknameRequest.java com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateNicknameRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/users/dto/request/UserUpdatePasswordRequest.java com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdatePasswordRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/users/dto/request/UserUpdateRequest.java com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateRequest 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/global/config/RedisConfig.java com.back.web7_9_codecrete_be.global.config.RedisConfig 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/global/error/code/AuthErrorCode.java com.back.web7_9_codecrete_be.global.error.code.AuthErrorCode 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/global/error/code/UserErrorCode.java com.back.web7_9_codecrete_be.global.error.code.UserErrorCode 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/global/error/handler/GlobalExceptionHandler.java com.back.web7_9_codecrete_be.global.error.handler.GlobalExceptionHandler 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/global/storage/FileStorageService.java com.back.web7_9_codecrete_be.global.storage.FileStorageService 0.00% 0 0
src/main/java/com/back/web7_9_codecrete_be/domain/email/service/EmailService.java com.back.web7_9_codecrete_be.domain.email.service.EmailService 2.13% 1 46
src/main/java/com/back/web7_9_codecrete_be/global/security/JwtAuthenticationFilter.java com.back.web7_9_codecrete_be.global.security.JwtAuthenticationFilter 3.33% 1 29
src/main/java/com/back/web7_9_codecrete_be/domain/users/entity/User.java com.back.web7_9_codecrete_be.domain.users.entity.User 16.00% 4 21
src/main/java/com/back/web7_9_codecrete_be/global/storage/S3FileStorageService.java com.back.web7_9_codecrete_be.global.storage.S3FileStorageService 33.33% 1 2
src/main/java/com/back/web7_9_codecrete_be/global/security/SecurityConfig.java com.back.web7_9_codecrete_be.global.security.SecurityConfig 100.00% 13 0
src/main/java/com/back/web7_9_codecrete_be/domain/users/entity/UserStatus.java com.back.web7_9_codecrete_be.domain.users.entity.UserStatus 100.00% 4 0
src/main/java/com/back/web7_9_codecrete_be/global/security/PassWordEncoderConfig.java com.back.web7_9_codecrete_be.global.security.PassWordEncoderConfig 100.00% 2 0

🔗 Full HTML report: See artifact jacoco-full-html on this run → https://github.com/prgrms-web-devcourse-final-project/WEB7_9_codecrete_BE/actions/runs/20209938266


// 인증 완료 상태 저장
// 인증 완료 상태 저장 (DB)
verifiedEmailRepository.save(new VerifiedEmail(email));
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DB에 저장하고 추후 사용자가 가입을 취소한다거나 돌아갔을 떄 이를 삭제하는 로직 같은게 있을까요? 지금 대충 둘러봤을때에는 보이지 않는 것 같습니다.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 부분 Redis로 이관해서 관리하는 쪽으로 반영하겠습니다!

Copy link
Copy Markdown
Collaborator

@ys0221 ys0221 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!!

@Creamcheesepie Creamcheesepie merged commit fb1c75e into main Dec 15, 2025
2 checks passed
@Creamcheesepie Creamcheesepie deleted the feat/#58 branch December 15, 2025 01:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[User] 마이페이지 조회, 수정, 탈퇴

3 participants