Skip to content

Commit 1fd9650

Browse files
authored
fix: 애플 로그인 로직 수정 (#280)
* feat: 외부 API 호출 툴 Feign 설정 * feat: Apple 로그인 구현 + 회원가입 Reqeust Provider 추가 * fix: Claims sub 항목 빼서 쓰게 수정 * fix: AuthorizationCode Request 제거 * fix: 애플 로그인 로직 수정
1 parent 08f85fd commit 1fd9650

File tree

4 files changed

+30
-42
lines changed

4 files changed

+30
-42
lines changed

src/main/java/com/shallwe/domain/auth/application/AuthService.java

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -72,34 +72,6 @@ public AuthRes signUp(final SignUpReq signUpReq) {
7272
return getUserAuthRes(newUser);
7373
}
7474

75-
@Transactional
76-
public AuthRes appleSignUp(AppleSignUpReq appleSignUpReq) {
77-
Claims claims = appleJwtUtils.getClaimsBy(appleSignUpReq.getIdentityToken());
78-
String providerId = claims.get("sub").toString();
79-
80-
if (userRepository.existsByProviderId(providerId)) {
81-
throw new AlreadyExistsProviderIdException();
82-
}
83-
84-
String appleRefreshToken = appleJwtUtils.getAppleToken(appleSignUpReq.getAuthorizationCode());
85-
AppleToken appleTokenReq = AppleToken.builder()
86-
.providerId(providerId)
87-
.refreshToken(appleRefreshToken)
88-
.build();
89-
appleTokenRepository.save(appleTokenReq);
90-
91-
User newUser = User.builder()
92-
.providerId(providerId)
93-
.provider(Provider.APPLE)
94-
.email(appleSignUpReq.getEmail())
95-
.password(passwordEncoder.encode(providerId))
96-
.role(Role.USER)
97-
.build();
98-
userRepository.save(newUser);
99-
100-
return getUserAuthRes(newUser);
101-
}
102-
10375
@Transactional
10476
public AuthRes signIn(final SignInReq signInReq) {
10577
User user = userRepository.findByEmailAndStatus(signInReq.getEmail(), Status.ACTIVE)
@@ -116,7 +88,29 @@ public AuthRes appleSignIn(AppleSignInReq appleSignInReq) {
11688
Claims claims = appleJwtUtils.getClaimsBy(appleSignInReq.getIdentityToken());
11789
String providerId = claims.get("sub").toString();
11890

119-
User user = userRepository.findByProviderId(providerId).orElseThrow(InvalidProviderIdException::new);
91+
Optional<User> optionalUser = userRepository.findByProviderId(providerId);
92+
93+
if (optionalUser.isEmpty()) {
94+
String appleRefreshToken = appleJwtUtils.getAppleToken(appleSignInReq.getAuthorizationCode());
95+
AppleToken appleTokenReq = AppleToken.builder()
96+
.providerId(providerId)
97+
.refreshToken(appleRefreshToken)
98+
.build();
99+
appleTokenRepository.save(appleTokenReq);
100+
101+
User newUser = User.builder()
102+
.providerId(providerId)
103+
.provider(Provider.APPLE)
104+
.password(passwordEncoder.encode(providerId))
105+
.role(Role.USER)
106+
.build();
107+
userRepository.save(newUser);
108+
109+
optionalUser = Optional.of(newUser);
110+
}
111+
112+
User user = optionalUser.get();
113+
120114
if (user.getName() == null || user.getPhoneNumber() == null || user.getAge() == null || user.getGender() == null) {
121115
throw new UnRegisteredUserException();
122116
}

src/main/java/com/shallwe/domain/auth/dto/request/AppleSignInReq.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@
66
@Data
77
public class AppleSignInReq {
88

9+
@Schema(type = "String", description = "애플 로그인을 위한 ProviderId")
10+
private String providerId;
11+
912
@Schema(type = "String", description = "애플 로그인을 위한 IdentityToken")
1013
private String identityToken;
1114

15+
@Schema(type = "String", description = "애플 로그인을 위한 AuthorizationCode")
16+
private String authorizationCode;
17+
1218
}

src/main/java/com/shallwe/domain/auth/exception/UnRegisteredUserException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
public class UnRegisteredUserException extends RuntimeException {
44

55
public UnRegisteredUserException() {
6-
super("회원가입이 완료되지 않은 유저입니다.");
6+
super("유저정보 입력이 완료되지 않은 유저입니다.");
77
}
88

99
}

src/main/java/com/shallwe/domain/auth/presentation/AuthController.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,6 @@ public ResponseCustom<AuthRes> signUp(
4848
return ResponseCustom.OK(authService.signUp(signUpReq));
4949
}
5050

51-
@Operation(summary = "애플 유저 회원가입", description = "애플 유저 회원가입을 수행합니다.")
52-
@ApiResponses(value = {
53-
@ApiResponse(responseCode = "200", description = "애플 회원가입 성공", content = { @Content(mediaType = "application/json", schema = @Schema(implementation = AuthRes.class) ) } ),
54-
@ApiResponse(responseCode = "400", description = "애플 회원가입 실패", content = { @Content(mediaType = "application/json", schema = @Schema(implementation = ErrorResponse.class) ) } ),
55-
})
56-
@PostMapping(value="/sign-up/apple")
57-
public ResponseCustom<AuthRes> signUp(
58-
@Parameter(description = "AppleSignUpReq Schema를 확인해주세요.", required = true) @RequestBody AppleSignUpReq appleSignUpReq
59-
) {
60-
return ResponseCustom.OK(authService.appleSignUp(appleSignUpReq));
61-
}
62-
6351
@Operation(summary = "유저 로그인", description = "유저 로그인을 수행합니다.")
6452
@ApiResponses(value = {
6553
@ApiResponse(responseCode = "200", description = "로그인 성공", content = { @Content(mediaType = "application/json", schema = @Schema(implementation = AuthRes.class) ) } ),

0 commit comments

Comments
 (0)