Skip to content

Commit 0a14aa7

Browse files
authored
[RELEASE] V2.1.7 동일 이메일의 경우 로그인 통합 구현
[RELEASE] V2.1.7 동일 이메일의 경우 로그인 통합 구현
2 parents 1535a11 + 5447d0c commit 0a14aa7

5 files changed

Lines changed: 17 additions & 17 deletions

File tree

src/main/java/ssu/eatssu/domain/auth/security/CustomUserDetailsService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ public class CustomUserDetailsService implements UserDetailsService {
1717

1818
private final UserRepository userRepository;
1919

20+
// OrderByIdAsc로 해줌으로써 처음 생성된 계정으로 연결된다.
2021
@Override
2122
public UserDetails loadUserByUsername(String username) {
22-
User user = userRepository.findByEmail(username)
23+
User user = userRepository.findFirstByEmailOrderByIdAsc(username)
2324
.orElseThrow(() -> new BaseException(BaseResponseStatus.NOT_FOUND_USER));
2425
return new CustomUserDetails(user);
2526
}

src/main/java/ssu/eatssu/domain/auth/service/OAuthService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ public class OAuthService {
3434

3535
public Tokens kakaoLogin(KakaoLoginRequest request) {
3636
User user = userRepository.findByProviderId(request.providerId())
37-
.orElseGet(() -> userService.join(request.email(), KAKAO, request.providerId()));
37+
.orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(request.email())
38+
.orElseGet(() -> userService.join(request.email(), KAKAO, request.providerId())));
3839

3940
return generateOauthJwtTokens(user.getEmail(), KAKAO, request.providerId());
4041
}
@@ -44,11 +45,11 @@ public Tokens kakaoLogin(KakaoLoginRequest request) {
4445
*/
4546
public Tokens kakaoLoginV2(KakaoLoginRequestV2 request) {
4647
User user = userRepository.findByProviderId(request.providerId())
47-
.orElseGet(() -> userService.joinV2(request.email(), KAKAO, request.providerId(),request.deviceType()));
48+
.orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(request.email())
49+
.orElseGet(() -> userService.joinV2(request.email(), KAKAO, request.providerId(),request.deviceType())));
50+
51+
user.updateDeviceType(request.deviceType());
4852

49-
if (user.getDeviceType() == null) {
50-
user.updateDeviceType(request.deviceType());
51-
}
5253

5354
return generateOauthJwtTokens(user.getEmail(), KAKAO, request.providerId());
5455
}
@@ -58,7 +59,8 @@ public Tokens appleLogin(AppleLoginRequest request) {
5859
OAuthInfo oAuthInfo = appleAuthenticator.getOAuthInfoByIdentityToken(request.identityToken());
5960

6061
User user = userRepository.findByProviderId(oAuthInfo.providerId())
61-
.orElseGet(() -> userService.join(oAuthInfo.email(), APPLE, oAuthInfo.providerId()));
62+
.orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(oAuthInfo.email())
63+
.orElseGet(() -> userService.join(oAuthInfo.email(), APPLE, oAuthInfo.providerId())));
6264

6365
updateAppleUserEmail(user, oAuthInfo.email());
6466

@@ -72,13 +74,12 @@ public Tokens appleLoginV2(AppleLoginRequestV2 request) {
7274
OAuthInfo oAuthInfo = appleAuthenticator.getOAuthInfoByIdentityToken(request.identityToken());
7375

7476
User user = userRepository.findByProviderId(oAuthInfo.providerId())
75-
.orElseGet(() -> userService.joinV2(oAuthInfo.email(), APPLE, oAuthInfo.providerId(),request.deviceType()));
77+
.orElseGet(() -> userRepository.findFirstByEmailOrderByIdAsc(oAuthInfo.email())
78+
.orElseGet(() -> userService.joinV2(oAuthInfo.email(), APPLE, oAuthInfo.providerId(),request.deviceType())));
7679

7780
updateAppleUserEmail(user, oAuthInfo.email());
7881

79-
if (user.getDeviceType() == null) {
80-
user.updateDeviceType(request.deviceType());
81-
}
82+
user.updateDeviceType(request.deviceType());
8283

8384
return generateOauthJwtTokens(user.getEmail(), APPLE, oAuthInfo.providerId());
8485
}

src/main/java/ssu/eatssu/domain/user/entity/User.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,6 @@ public void updateDepartment(Department department) {
123123
this.department = department;
124124
}
125125

126-
// 회원 가입 v2 마이그레이션을 위한 메서드 (원래는 가입시 DeviceType을 받아야 합니다.)
126+
// 추후에 기종이 바뀌더라도 업데이트합니다. + V1-> V2 마이그레이션을 수행하는 역할을 하기도 합니다.
127127
public void updateDeviceType(DeviceType deviceType) { this.deviceType = deviceType; }
128128
}

src/main/java/ssu/eatssu/domain/user/repository/UserRepository.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ public interface UserRepository extends JpaRepository<User, Long> {
1313

1414
boolean existsByNickname(String nickname);
1515

16-
Optional<User> findByEmail(String email);
17-
1816
Optional<User> findByProviderId(String providerId);
1917

20-
Optional<User> findByNickname(String nickname);
18+
Optional<User> findFirstByEmailOrderByIdAsc(String email);
2119
}

src/main/resources/application-dev.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ spring:
4141
jwt:
4242
secret:
4343
key: ${EATSSU_JWT_SECRET_DEV}
44-
token-validity-in-seconds: 86400
45-
refresh-token-validity-in-seconds: 604800
44+
token-validity-in-seconds: 60
45+
refresh-token-validity-in-seconds: 180
4646

4747
#S3
4848
cloud:

0 commit comments

Comments
 (0)