Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat(#37): 회원 이름 이메일 저장 #52

Merged
merged 7 commits into from
Feb 4, 2025
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();
kimyu0218 marked this conversation as resolved.
Show resolved Hide resolved
})
.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