diff --git a/src/main/java/ssu/eatssu/domain/auth/security/CustomUserDetailsService.java b/src/main/java/ssu/eatssu/domain/auth/security/CustomUserDetailsService.java index 3e52882..3b1f6a5 100644 --- a/src/main/java/ssu/eatssu/domain/auth/security/CustomUserDetailsService.java +++ b/src/main/java/ssu/eatssu/domain/auth/security/CustomUserDetailsService.java @@ -17,9 +17,10 @@ public class CustomUserDetailsService implements UserDetailsService { private final UserRepository userRepository; + // OrderByIdAsc로 해줌으로써 처음 생성된 계정으로 연결된다. @Override public UserDetails loadUserByUsername(String username) { - User user = userRepository.findByEmail(username) + User user = userRepository.findFirstByEmailOrderByIdAsc(username) .orElseThrow(() -> new BaseException(BaseResponseStatus.NOT_FOUND_USER)); return new CustomUserDetails(user); } diff --git a/src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java b/src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java index 2d6e7ad..1b46af8 100644 --- a/src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java +++ b/src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java @@ -34,7 +34,8 @@ public class OAuthService { public Tokens kakaoLogin(KakaoLoginRequest request) { User user = userRepository.findByProviderId(request.providerId()) - .orElseGet(() -> userService.join(request.email(), KAKAO, request.providerId())); + .orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(request.email()) + .orElseGet(() -> userService.join(request.email(), KAKAO, request.providerId()))); return generateOauthJwtTokens(user.getEmail(), KAKAO, request.providerId()); } @@ -44,11 +45,11 @@ public Tokens kakaoLogin(KakaoLoginRequest request) { */ public Tokens kakaoLoginV2(KakaoLoginRequestV2 request) { User user = userRepository.findByProviderId(request.providerId()) - .orElseGet(() -> userService.joinV2(request.email(), KAKAO, request.providerId(),request.deviceType())); + .orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(request.email()) + .orElseGet(() -> userService.joinV2(request.email(), KAKAO, request.providerId(),request.deviceType()))); + + user.updateDeviceType(request.deviceType()); - if (user.getDeviceType() == null) { - user.updateDeviceType(request.deviceType()); - } return generateOauthJwtTokens(user.getEmail(), KAKAO, request.providerId()); } @@ -58,7 +59,8 @@ public Tokens appleLogin(AppleLoginRequest request) { OAuthInfo oAuthInfo = appleAuthenticator.getOAuthInfoByIdentityToken(request.identityToken()); User user = userRepository.findByProviderId(oAuthInfo.providerId()) - .orElseGet(() -> userService.join(oAuthInfo.email(), APPLE, oAuthInfo.providerId())); + .orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(oAuthInfo.email()) + .orElseGet(() -> userService.join(oAuthInfo.email(), APPLE, oAuthInfo.providerId()))); updateAppleUserEmail(user, oAuthInfo.email()); @@ -72,13 +74,12 @@ public Tokens appleLoginV2(AppleLoginRequestV2 request) { OAuthInfo oAuthInfo = appleAuthenticator.getOAuthInfoByIdentityToken(request.identityToken()); User user = userRepository.findByProviderId(oAuthInfo.providerId()) - .orElseGet(() -> userService.joinV2(oAuthInfo.email(), APPLE, oAuthInfo.providerId(),request.deviceType())); + .orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(oAuthInfo.email()) + .orElseGet(() -> userService.joinV2(oAuthInfo.email(), APPLE, oAuthInfo.providerId(),request.deviceType()))); updateAppleUserEmail(user, oAuthInfo.email()); - if (user.getDeviceType() == null) { - user.updateDeviceType(request.deviceType()); - } + user.updateDeviceType(request.deviceType()); return generateOauthJwtTokens(user.getEmail(), APPLE, oAuthInfo.providerId()); } diff --git a/src/main/java/ssu/eatssu/domain/user/entity/User.java b/src/main/java/ssu/eatssu/domain/user/entity/User.java index 1013598..912d212 100644 --- a/src/main/java/ssu/eatssu/domain/user/entity/User.java +++ b/src/main/java/ssu/eatssu/domain/user/entity/User.java @@ -123,6 +123,6 @@ public void updateDepartment(Department department) { this.department = department; } - // 회원 가입 v2 마이그레이션을 위한 메서드 (원래는 가입시 DeviceType을 받아야 합니다.) + // 추후에 기종이 바뀌더라도 업데이트합니다. + V1-> V2 마이그레이션을 수행하는 역할을 하기도 합니다. public void updateDeviceType(DeviceType deviceType) { this.deviceType = deviceType; } } diff --git a/src/main/java/ssu/eatssu/domain/user/repository/UserRepository.java b/src/main/java/ssu/eatssu/domain/user/repository/UserRepository.java index fbc10d2..de6fa15 100644 --- a/src/main/java/ssu/eatssu/domain/user/repository/UserRepository.java +++ b/src/main/java/ssu/eatssu/domain/user/repository/UserRepository.java @@ -13,9 +13,7 @@ public interface UserRepository extends JpaRepository { boolean existsByNickname(String nickname); - Optional findByEmail(String email); - Optional findByProviderId(String providerId); - Optional findByNickname(String nickname); + Optional findFirstByEmailOrderByIdAsc(String email); } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index c328707..e201296 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -41,8 +41,8 @@ spring: jwt: secret: key: ${EATSSU_JWT_SECRET_DEV} - token-validity-in-seconds: 86400 - refresh-token-validity-in-seconds: 604800 + token-validity-in-seconds: 60 + refresh-token-validity-in-seconds: 180 #S3 cloud: