Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/main/java/com/cmc/mercury/domain/user/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,5 +82,7 @@ public void updateNickname(String nickname) {
this.nickname = nickname;
}

public void deleteUser() { this.userStatus = UserStatus.INACTIVE; }
public void updateUserStatus(UserStatus userStatus) {
this.userStatus = userStatus;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public User withdraw(User user) {
throw new CustomException(ErrorCode.ALREADY_WITHDRAWN);
}

user.deleteUser();
user.updateUserStatus(UserStatus.INACTIVE);
user.updateRefreshToken(null); // Refresh Token 삭제

return user;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.cmc.mercury.domain.user.entity.OAuthType;
import com.cmc.mercury.domain.user.entity.User;
import com.cmc.mercury.domain.user.entity.UserStatus;
import com.cmc.mercury.domain.user.repository.UserRepository;
import com.cmc.mercury.domain.user.response.UserTestRequest;
import com.cmc.mercury.global.exception.CustomException;
Expand Down Expand Up @@ -46,6 +47,11 @@ public User createTestUser(UserTestRequest request) {


if (existingUser != null) {
if (existingUser.getUserStatus() == UserStatus.INACTIVE) {
// 회원탈퇴한 유저 재가입
existingUser.updateUserStatus(UserStatus.ACTIVE);
userRepository.save(existingUser);
}
// 기존 유저가 있으면 로그인 처리 (토큰 갱신)
setTestUserTokens(existingUser, request.isShortLivedAccessToken());
return existingUser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
public class CustomOAuth2UserService extends DefaultOAuth2UserService {

private final UserRepository userRepository;
private final AppleIdTokenVerifier appleIdTokenVerifier;
private final AppleIdTokenVerifier appleIdTokenVerifier;

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

User user = existingUser.orElseGet(() -> {
// 기존 유저 혹은 탈퇴한 사용자인지 확인
User user;
if (!isNewUser) {
User existing = existingUser.get();
if (existing.getUserStatus() == UserStatus.INACTIVE) {
log.info("탈퇴한 회원 재가입 - 상태를 ACTIVE로 변경");
existing.updateUserStatus(UserStatus.ACTIVE);
isNewUser = true;
user = userRepository.save(existing);
} else {
user = existing;
}
} else {
log.info("새로운 사용자 생성 시도");
return createUser(oAuth2UserInfo);
});
user = createUser(oAuth2UserInfo);
}

log.info("사용자 조회/생성 완료: userId={}", user.getId());

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