Skip to content

Commit c9afc54

Browse files
authored
[Feature] 탈퇴한 회원 재가입 시 처리 로직
[Feature] 탈퇴한 회원 재가입 시 처리 로직
2 parents ee75515 + c16cc7a commit c9afc54

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

src/main/java/com/cmc/mercury/domain/user/entity/User.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,7 @@ public void updateNickname(String nickname) {
8282
this.nickname = nickname;
8383
}
8484

85-
public void deleteUser() { this.userStatus = UserStatus.INACTIVE; }
85+
public void updateUserStatus(UserStatus userStatus) {
86+
this.userStatus = userStatus;
87+
}
8688
}

src/main/java/com/cmc/mercury/domain/user/service/SignOffService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public User withdraw(User user) {
3030
throw new CustomException(ErrorCode.ALREADY_WITHDRAWN);
3131
}
3232

33-
user.deleteUser();
33+
user.updateUserStatus(UserStatus.INACTIVE);
3434
user.updateRefreshToken(null); // Refresh Token 삭제
3535

3636
return user;

src/main/java/com/cmc/mercury/domain/user/service/UserService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.cmc.mercury.domain.user.entity.OAuthType;
44
import com.cmc.mercury.domain.user.entity.User;
5+
import com.cmc.mercury.domain.user.entity.UserStatus;
56
import com.cmc.mercury.domain.user.repository.UserRepository;
67
import com.cmc.mercury.domain.user.response.UserTestRequest;
78
import com.cmc.mercury.global.exception.CustomException;
@@ -46,6 +47,11 @@ public User createTestUser(UserTestRequest request) {
4647

4748

4849
if (existingUser != null) {
50+
if (existingUser.getUserStatus() == UserStatus.INACTIVE) {
51+
// 회원탈퇴한 유저 재가입
52+
existingUser.updateUserStatus(UserStatus.ACTIVE);
53+
userRepository.save(existingUser);
54+
}
4955
// 기존 유저가 있으면 로그인 처리 (토큰 갱신)
5056
setTestUserTokens(existingUser, request.isShortLivedAccessToken());
5157
return existingUser;

src/main/java/com/cmc/mercury/global/oauth/service/CustomOAuth2UserService.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
3434

3535
private final UserRepository userRepository;
36-
private final AppleIdTokenVerifier appleIdTokenVerifier;
36+
private final AppleIdTokenVerifier appleIdTokenVerifier;
3737

3838
@Override
3939
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
@@ -98,10 +98,23 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic
9898
Optional<User> existingUser = userRepository.findByOauthTypeAndOauthId(oAuthType, oauthId);
9999
boolean isNewUser = existingUser.isEmpty(); // 존재하지 않으면 회원가입
100100

101-
User user = existingUser.orElseGet(() -> {
101+
// 기존 유저 혹은 탈퇴한 사용자인지 확인
102+
User user;
103+
if (!isNewUser) {
104+
User existing = existingUser.get();
105+
if (existing.getUserStatus() == UserStatus.INACTIVE) {
106+
log.info("탈퇴한 회원 재가입 - 상태를 ACTIVE로 변경");
107+
existing.updateUserStatus(UserStatus.ACTIVE);
108+
isNewUser = true;
109+
user = userRepository.save(existing);
110+
} else {
111+
user = existing;
112+
}
113+
} else {
102114
log.info("새로운 사용자 생성 시도");
103-
return createUser(oAuth2UserInfo);
104-
});
115+
user = createUser(oAuth2UserInfo);
116+
}
117+
105118
log.info("사용자 조회/생성 완료: userId={}", user.getId());
106119

107120
// 회원가입 여부를 Security Context에 저장 (OAuth2User에 포함)

0 commit comments

Comments
 (0)