Skip to content

Commit 9df5e95

Browse files
authored
feat: 토큰 재발급 로직 변경 (#82)
1 parent a66e13d commit 9df5e95

4 files changed

Lines changed: 18 additions & 5 deletions

File tree

‎src/main/java/com/jobnote/domain/refreshtoken/repository/RefreshTokenRepository.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
import com.jobnote.domain.refreshtoken.domain.RefreshToken;
44
import org.springframework.data.jpa.repository.JpaRepository;
55

6+
import java.util.Optional;
7+
68
public interface RefreshTokenRepository extends JpaRepository<RefreshToken, Long> {
79

810
boolean existsByToken(final String token);
911
void deleteByToken(final String token);
12+
Optional<RefreshToken> findByToken(final String token);
1013
}

‎src/main/java/com/jobnote/domain/user/controller/UserController.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ public ResponseEntity<ApiResponse<Void>> logout(final HttpServletRequest request
6262

6363
/* TOKEN REISSUE */
6464
@PostMapping("/reissue")
65-
public ResponseEntity<ApiResponse<Void>> tokenReissue(@LoginUser CustomUserDetails principal, final HttpServletRequest request, final HttpServletResponse response) {
66-
final Token token = authTokenService.reissue(principal.getUserId(), getValueFromCookie(request.getCookies(), COOKIE_NAME_REFRESH_TOKEN));
65+
public ResponseEntity<ApiResponse<Void>> tokenReissue(final HttpServletRequest request, final HttpServletResponse response) {
66+
final Token token = authTokenService.reissue(getValueFromCookie(request.getCookies(), COOKIE_NAME_REFRESH_TOKEN));
6767
tokenProvider.responseToken(response, token);
6868
return ResponseEntity.ok(ApiResponse.ofSuccess(ResponseCode.OK));
6969
}

‎src/main/java/com/jobnote/domain/user/service/AuthTokenService.java‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,13 @@ public Token saveAndGetToken(final Long userId) {
3636
}
3737

3838
@Transactional
39-
public Token reissue(final Long userId, final String existingRefreshToken) {
39+
public Token reissue(final String existingRefreshToken) {
4040
tokenProvider.validateRefreshToken(existingRefreshToken);
41-
invalidate(existingRefreshToken);
42-
return saveAndGetToken(userId);
41+
42+
final RefreshToken refreshToken = getRefreshTokenByToken(existingRefreshToken);
43+
refreshTokenRepository.delete(refreshToken);
44+
45+
return saveAndGetToken(refreshToken.getUser().getId());
4346
}
4447

4548
@Transactional
@@ -60,4 +63,9 @@ private void validateExistsRefreshToken(final String existingRefreshToken) {
6063
throw new JobNoteException(NOT_FOUND_REFRESH_TOKEN);
6164
}
6265
}
66+
67+
private RefreshToken getRefreshTokenByToken(final String token) {
68+
return refreshTokenRepository.findByToken(token)
69+
.orElseThrow(() -> new JobNoteException(NOT_FOUND_REFRESH_TOKEN));
70+
}
6371
}

‎src/main/java/com/jobnote/global/common/Constants.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public abstract class Constants {
2525
public static final String[] WHITELIST = {
2626
"/api/v1/users/signup/**",
2727
"/api/v1/users/login",
28+
"/api/v1/users/reissue",
2829
"/api/v1/users/reset-password",
2930
"/api/v1/verification-emails/**",
3031
"/oauth2/**",
@@ -38,6 +39,7 @@ public abstract class Constants {
3839
"/api/v1/users/signup",
3940
"/api/v1/users/signup/social",
4041
"/api/v1/users/login",
42+
"/api/v1/users/reissue",
4143
"/api/v1/users/reset-password",
4244
"/api/v1/verification-emails",
4345
"/api/v1/verification-emails/signup/verify",

0 commit comments

Comments
 (0)