From 33c6d8afb5c9005897d461b6c6f70e6eed1f7387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=98=EC=9A=A9=EC=A4=80?= Date: Sat, 24 Jan 2026 12:19:23 +0900 Subject: [PATCH 1/3] Merge pull request #337 from EAT-SSU/chore/#336-login-v2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit chore: Login V2관련 조건문과 주석 변경 --- .../ssu/eatssu/domain/auth/service/OAuthService.java | 9 +++------ src/main/java/ssu/eatssu/domain/user/entity/User.java | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) 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..8310a54 100644 --- a/src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java +++ b/src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java @@ -46,9 +46,8 @@ public Tokens kakaoLoginV2(KakaoLoginRequestV2 request) { User user = userRepository.findByProviderId(request.providerId()) .orElseGet(() -> userService.joinV2(request.email(), KAKAO, request.providerId(),request.deviceType())); - if (user.getDeviceType() == null) { - user.updateDeviceType(request.deviceType()); - } + user.updateDeviceType(request.deviceType()); + return generateOauthJwtTokens(user.getEmail(), KAKAO, request.providerId()); } @@ -76,9 +75,7 @@ public Tokens appleLoginV2(AppleLoginRequestV2 request) { 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; } } From 5951fe219795789069be6fe28e1a248bb1dc8b16 Mon Sep 17 00:00:00 2001 From: Eunseo Song <162149585+eunseo9311@users.noreply.github.com> Date: Mon, 26 Jan 2026 17:37:35 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20dev=20=ED=99=98=EA=B2=BD=20?= =?UTF-8?q?=ED=86=A0=ED=81=B0=20=EB=A7=8C=EB=A3=8C=20=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=EB=8B=A8=EC=B6=95=20(=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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: From 5447d0ce2b4c2d321d9a87e8598fecb7f692f0d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=98=EC=9A=A9=EC=A4=80?= Date: Sun, 1 Feb 2026 23:23:41 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20(#339)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 나용준 <141994188+youngJun99@users.noreply.github.com> --- .../auth/security/CustomUserDetailsService.java | 3 ++- .../ssu/eatssu/domain/auth/service/OAuthService.java | 12 ++++++++---- .../domain/user/repository/UserRepository.java | 4 +--- 3 files changed, 11 insertions(+), 8 deletions(-) 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 8310a54..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,7 +45,8 @@ 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()); @@ -57,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()); @@ -71,7 +74,8 @@ 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()); 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); }