Skip to content

Commit

Permalink
[#37] fix: 애플 로그인 리뷰 반영
Browse files Browse the repository at this point in the history
애플은 최초 로그인할 때만 name 값을 전달하므로 로그인 시엔 email만 업데이트 한다
  • Loading branch information
kimyu0218 committed Feb 4, 2025
1 parent 512e98f commit e6f129d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,18 @@ public Long kakaoLogin(final KakaoLoginCommand command) {
final KakaoUserInfoResponse userInfo = getKakaoUserInfo(token.accessToken());

final String oauthId = userInfo.id().toString();
final Member member = findMemberWithSocialProvider(oauthId, SocialProvider.KAKAO);
if (member == null) {
final Member newMember =
memberRepository.save(
Member.create(userInfo.kakaoAccount().name(), userInfo.kakaoAccount().email()));
socialAccountRepository.save(SocialAccount.kakaoSignup(oauthId, newMember));
return newMember.getId();
}
member.updateUserInfo(userInfo.kakaoAccount().name(), userInfo.kakaoAccount().email());
return member.getId();
return socialAccountRepository
.findByOauthIdAndSocialProviderAndDeletedAtIsNull(oauthId, SocialProvider.KAKAO)
.map(SocialAccount::getMember)
.map(
it -> {
it.updateUserInfo(userInfo.kakaoAccount().name(), userInfo.kakaoAccount().email());
return it.getId();
})
.orElseGet(
() ->
kakaoSignUp(
oauthId, userInfo.kakaoAccount().name(), userInfo.kakaoAccount().email()));
}

private KakaoUserInfoResponse getKakaoUserInfo(final String accessToken) {
Expand All @@ -77,13 +79,10 @@ private KakaoTokenResponse getKakaoToken(
return kakaoAuthClient.requestToken(params);
}

private Member findMemberWithSocialProvider(
final String oauthId, final SocialProvider socialProvider) {
return socialAccountRepository
.findByOauthIdAndSocialProviderAndDeletedAtIsNull(oauthId, socialProvider)
.map(SocialAccount::getMember)
.filter(member -> member.getDeletedAt() == null)
.orElse(null);
private Long kakaoSignUp(final String oauthId, final String name, final String email) {
final Member member = memberRepository.save(Member.create(name, email));
socialAccountRepository.save(SocialAccount.kakaoSignup(oauthId, member));
return member.getId();
}

@Transactional
Expand All @@ -92,16 +91,17 @@ public Long appleLogin(final AppleLoginCommand command) {
final String jwtClaims = appleIdToken.decodePayload();
final AppleAuthorization authorization = decodeAppleIdTokenPayload(jwtClaims);

final Member member =
findMemberWithSocialProvider(authorization.getSub(), SocialProvider.APPLE);
if (member == null) {
final Member newMember =
memberRepository.save(Member.create(command.name(), authorization.getEmail()));
socialAccountRepository.save(SocialAccount.appleSignUp(authorization.getSub(), newMember));
return newMember.getId();
}
member.updateUserInfo(command.name(), authorization.getEmail());
return member.getId();
return socialAccountRepository
.findByOauthIdAndSocialProviderAndDeletedAtIsNull(
authorization.getSub(), SocialProvider.APPLE)
.map(SocialAccount::getMember)
.map(
it -> {
it.updateUserInfo(authorization.getEmail());
return it.getId();
})
.orElseGet(
() -> appleSignup(authorization.getSub(), command.name(), authorization.getEmail()));
}

private AppleAuthorization decodeAppleIdTokenPayload(final String appleJwtClaims) {
Expand All @@ -113,4 +113,10 @@ private AppleAuthorization decodeAppleIdTokenPayload(final String appleJwtClaims
throw CustomException.INVALID_APPLE_ID_TOKEN;
}
}

private Long appleSignup(final String oauthId, final String name, final String email) {
final Member member = memberRepository.save(Member.create(name, email));
socialAccountRepository.save(SocialAccount.appleSignUp(oauthId, member));
return member.getId();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ public void softDelete() {
super.softDelete();
}

public void updateUserInfo(final String email) {
this.email = email;
}

public void updateUserInfo(final String name, final String email) {
this.name = name;
this.email = email;
Expand Down

0 comments on commit e6f129d

Please sign in to comment.