From 01ad5978f6f9b919bf5270a3f87971602b52210f Mon Sep 17 00:00:00 2001 From: joona95 Date: Sun, 4 Jan 2026 23:24:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=83=88=ED=87=B4=ED=95=9C=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=EA=B0=80=20=EB=8B=A4=EC=8B=9C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=86=8C=ED=94=84=ED=8A=B8=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EA=B2=80=EC=A6=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UserRepository의 findBySocialId() 메서드를 findBySocialIdAndDeletedAtIsNull()로 변경하여 deletedAt이 null인 (탈퇴하지 않은) 사용자만 조회되도록 수정했습니다. 이를 통해 탈퇴한 사용자가 다시 로그인하는 것을 방지합니다. - UserRepository: JPA 메서드 네이밍으로 soft delete 검증 추가 - UserService.create(): 업데이트된 리포지토리 메서드 호출 - UserServiceTest: 네이버, 카카오, 구글 로그인 테스트 업데이트 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../com/recipe/app/src/user/application/UserService.java | 2 +- .../java/com/recipe/app/src/user/infra/UserRepository.java | 2 +- .../recipe/app/src/user/application/UserServiceTest.groovy | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/recipe/app/src/user/application/UserService.java b/src/main/java/com/recipe/app/src/user/application/UserService.java index f490b3da..0f4c2c4e 100644 --- a/src/main/java/com/recipe/app/src/user/application/UserService.java +++ b/src/main/java/com/recipe/app/src/user/application/UserService.java @@ -118,7 +118,7 @@ public UserSocialLoginResponse appleLogin(UserLoginRequest request) { private User create(User user) { - return userRepository.findBySocialId(user.getSocialId()) + return userRepository.findBySocialIdAndDeletedAtIsNull(user.getSocialId()) .orElseGet(() -> userRepository.save(user)); } diff --git a/src/main/java/com/recipe/app/src/user/infra/UserRepository.java b/src/main/java/com/recipe/app/src/user/infra/UserRepository.java index 27f9b010..14f2ba8b 100644 --- a/src/main/java/com/recipe/app/src/user/infra/UserRepository.java +++ b/src/main/java/com/recipe/app/src/user/infra/UserRepository.java @@ -9,5 +9,5 @@ @Repository public interface UserRepository extends JpaRepository { - Optional findBySocialId(String socialId); + Optional findBySocialIdAndDeletedAtIsNull(String socialId); } diff --git a/src/test/groovy/com/recipe/app/src/user/application/UserServiceTest.groovy b/src/test/groovy/com/recipe/app/src/user/application/UserServiceTest.groovy index 1161c0fe..fc89fa67 100644 --- a/src/test/groovy/com/recipe/app/src/user/application/UserServiceTest.groovy +++ b/src/test/groovy/com/recipe/app/src/user/application/UserServiceTest.groovy @@ -85,7 +85,7 @@ class UserServiceTest extends Specification { userAuthClientService.getUserByNaverAuthInfo(request) >> user - userRepository.findBySocialId(user.socialId) >> Optional.of(user) + userRepository.findBySocialIdAndDeletedAtIsNull(user.socialId) >> Optional.of(user) String accessToken = "access_token" String refreshToken = "refresh_token" @@ -141,7 +141,7 @@ class UserServiceTest extends Specification { userAuthClientService.getUserByKakaoAuthInfo(request) >> user - userRepository.findBySocialId(user.socialId) >> Optional.of(user) + userRepository.findBySocialIdAndDeletedAtIsNull(user.socialId) >> Optional.of(user) String accessToken = "access_token" String refreshToken = "refresh_token" @@ -197,7 +197,7 @@ class UserServiceTest extends Specification { userAuthClientService.getUserByGoogleAuthInfo(request) >> user - userRepository.findBySocialId(user.socialId) >> Optional.of(user) + userRepository.findBySocialIdAndDeletedAtIsNull(user.socialId) >> Optional.of(user) String accessToken = "access_token" String refreshToken = "refresh_token"