Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import java.util.Map;
import life.mosu.mosuserver.domain.profile.repository.ProfileJpaRepository;
import life.mosu.mosuserver.domain.user.entity.UserJpaEntity;
import life.mosu.mosuserver.global.exception.CustomRuntimeException;
import life.mosu.mosuserver.global.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.ParameterizedTypeReference;
Expand Down Expand Up @@ -62,7 +60,7 @@ public OAuth2User loadUser(final OAuth2UserRequest userRequest)
final UserJpaEntity oAuthUser = oAuthUserPersistenceProcessor.process(userInfo);
if (oAuthUser.isMosuUser()) {
log.info("모수 회원으로 가입된 사용자입니다: {}", oAuthUser.getLoginId());
throw new CustomRuntimeException(ErrorCode.ALREADY_MOSU_USER);
throw new SecurityException();

Choose a reason for hiding this comment

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

medium

현재 SecurityException을 사용하고 계신데, 이 예외는 자바 보안 모델과 관련이 깊어 현재 컨텍스트에는 의미가 명확하게 와닿지 않을 수 있습니다.

스프링 시큐리티의 예외 계층 구조를 활용하여 더 의미가 명확한 예외를 사용하는 것을 추천합니다. 예를 들어, AuthenticationServiceException은 인증 처리 중 발생하는 서비스 레벨의 문제를 나타내는 데 사용됩니다. "이미 가입된 사용자가 소셜 로그인을 시도하는 경우"를 서비스 로직 상의 인증 실패 케이스로 보고 이 예외를 사용하면 코드의 의도를 더 잘 드러낼 수 있습니다.

이렇게 변경하면 스프링 시큐리티의 표준 인증 실패 처리 흐름을 따르면서도, 나중에 코드를 유지보수할 때 예외의 원인을 파악하기 용이해집니다.

다음과 같이 변경하는 것을 제안합니다. (이 경우 org.springframework.security.authentication.AuthenticationServiceException 임포트가 필요합니다.)

Suggested change
throw new SecurityException();
throw new AuthenticationServiceException("모수 회원으로 가입된 사용자입니다. 일반 로그인을 이용해주세요.");

}
Boolean isProfileRegistered = profileRepository.existsByUserId(oAuthUser.getId());

Expand Down