Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,8 @@ public record AuthResponse(
String refreshToken,

@Schema(description = "Refresh Token expiration time in seconds", example = "604800")
Integer refreshTokenExpiresIn
Integer refreshTokenExpiresIn,

@Schema(description = "True if the member is newly registered, false if already registered", example = "true")
Boolean isNewMember
) { }
17 changes: 9 additions & 8 deletions src/main/java/com/und/server/auth/service/AuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.und.server.common.dto.request.TestAuthRequest;
import com.und.server.common.exception.ServerException;
import com.und.server.common.util.ProfileManager;
import com.und.server.member.entity.Member;
import com.und.server.member.dto.MemberCreationResult;
import com.und.server.member.exception.MemberErrorResult;
import com.und.server.member.service.MemberService;

Expand All @@ -44,9 +44,9 @@ public class AuthService {
public AuthResponse issueTokensForTest(final TestAuthRequest request) {
final Provider provider = convertToProvider(request.provider());
final String providerId = request.providerId();
final Member member = memberService.findOrCreateMember(provider, providerId);
final MemberCreationResult result = memberService.findOrCreateMember(provider, providerId);

return issueTokens(member.getId());
return issueTokens(result.member().getId(), result.isNewMember());
}

@Transactional
Expand All @@ -66,9 +66,9 @@ public AuthResponse login(final AuthRequest authRequest) {

verifyIdTokenNonce(provider, idToken);
final String providerId = getProviderIdFromIdToken(provider, idToken);
final Member member = memberService.findOrCreateMember(provider, providerId);
final MemberCreationResult result = memberService.findOrCreateMember(provider, providerId);

return issueTokens(member.getId());
return issueTokens(result.member().getId(), result.isNewMember());
}

@Transactional
Expand All @@ -92,7 +92,7 @@ public AuthResponse reissueTokens(final RefreshTokenRequest refreshTokenRequest)

refreshTokenService.verifyRefreshToken(memberId, providedRefreshToken);

return issueTokens(memberId);
return issueTokens(memberId, false);
}

@Transactional
Expand Down Expand Up @@ -120,7 +120,7 @@ private String getProviderIdFromIdToken(final Provider provider, final String id
return oidcProviderFactory.getProviderId(provider, idToken, oidcPublicKeys);
}

private AuthResponse issueTokens(final Long memberId) {
private AuthResponse issueTokens(final Long memberId, final boolean isNewMember) {
final String accessToken = jwtProvider.generateAccessToken(memberId);
final String refreshToken = refreshTokenService.generateRefreshToken();
refreshTokenService.saveRefreshToken(memberId, refreshToken);
Expand All @@ -130,7 +130,8 @@ private AuthResponse issueTokens(final Long memberId) {
accessToken,
jwtProperties.accessTokenExpireTime(),
refreshToken,
jwtProperties.refreshTokenExpireTime());
jwtProperties.refreshTokenExpireTime(),
isNewMember);
}

private Long getMemberIdForReissue(final String accessToken) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.und.server.member.dto;

import com.und.server.member.entity.Member;

public record MemberCreationResult(
Member member,
boolean isNewMember
) { }
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.und.server.auth.oauth.Provider;
import com.und.server.auth.service.RefreshTokenService;
import com.und.server.common.exception.ServerException;
import com.und.server.member.dto.MemberCreationResult;
import com.und.server.member.dto.request.NicknameRequest;
import com.und.server.member.dto.response.MemberResponse;
import com.und.server.member.entity.Member;
Expand All @@ -32,12 +33,13 @@ public List<MemberResponse> getMemberList() {
}

@Transactional
public Member findOrCreateMember(final Provider provider, final String providerId) {
public MemberCreationResult findOrCreateMember(final Provider provider, final String providerId) {
validateProviderIsNotNull(provider);
validateProviderIdIsNotNull(providerId);

return findMemberByProviderId(provider, providerId)
.orElseGet(() -> createMember(provider, providerId));
.map(member -> new MemberCreationResult(member, false))
.orElseGet(() -> new MemberCreationResult(createMember(provider, providerId), true));
}

public Member findMemberById(final Long memberId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,8 @@ void Given_ValidKakaoLoginRequest_When_Login_Then_ReturnsOkWithTokens() throws E
"dummy.access.token",
10000,
"dummy.refresh.token",
20000
20000,
true
);

doReturn(authResponse).when(authService).login(authRequest);
Expand All @@ -278,6 +279,7 @@ void Given_ValidKakaoLoginRequest_When_Login_Then_ReturnsOkWithTokens() throws E
assertThat(response.accessTokenExpiresIn()).isEqualTo(10000);
assertThat(response.refreshToken()).isEqualTo("dummy.refresh.token");
assertThat(response.refreshTokenExpiresIn()).isEqualTo(20000);
assertThat(response.isNewMember()).isTrue();
}

@Test
Expand All @@ -291,7 +293,8 @@ void Given_ValidAppleLoginRequest_When_Login_Then_ReturnsOkWithTokens() throws E
"dummy.access.token",
10000,
"dummy.refresh.token",
20000
20000,
true
);

doReturn(authResponse).when(authService).login(authRequest);
Expand All @@ -315,6 +318,7 @@ void Given_ValidAppleLoginRequest_When_Login_Then_ReturnsOkWithTokens() throws E
assertThat(response.tokenType()).isEqualTo("Bearer");
assertThat(response.accessToken()).isEqualTo("dummy.access.token");
assertThat(response.refreshToken()).isEqualTo("dummy.refresh.token");
assertThat(response.isNewMember()).isTrue();
}

@Test
Expand Down Expand Up @@ -372,7 +376,8 @@ void Given_ValidRefreshTokenRequest_When_ReissueTokens_Then_ReturnsCreatedWithNe
"new.access.token",
10000,
"new.refresh.token",
7200
7200,
false
);

doReturn(authResponse).when(authService).reissueTokens(refreshTokenRequest);
Expand All @@ -396,6 +401,7 @@ void Given_ValidRefreshTokenRequest_When_ReissueTokens_Then_ReturnsCreatedWithNe
assertThat(response.tokenType()).isEqualTo("Bearer");
assertThat(response.accessToken()).isEqualTo("new.access.token");
assertThat(response.refreshToken()).isEqualTo("new.refresh.token");
assertThat(response.isNewMember()).isFalse();
}

@Test
Expand Down
Loading