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 @@ -3,8 +3,11 @@
import com.jobnote.domain.refreshtoken.domain.RefreshToken;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface RefreshTokenRepository extends JpaRepository<RefreshToken, Long> {

boolean existsByToken(final String token);
void deleteByToken(final String token);
Optional<RefreshToken> findByToken(final String token);
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ public ResponseEntity<ApiResponse<Void>> logout(final HttpServletRequest request

/* TOKEN REISSUE */
@PostMapping("/reissue")
public ResponseEntity<ApiResponse<Void>> tokenReissue(@LoginUser CustomUserDetails principal, final HttpServletRequest request, final HttpServletResponse response) {
final Token token = authTokenService.reissue(principal.getUserId(), getValueFromCookie(request.getCookies(), COOKIE_NAME_REFRESH_TOKEN));
public ResponseEntity<ApiResponse<Void>> tokenReissue(final HttpServletRequest request, final HttpServletResponse response) {
final Token token = authTokenService.reissue(getValueFromCookie(request.getCookies(), COOKIE_NAME_REFRESH_TOKEN));
tokenProvider.responseToken(response, token);
return ResponseEntity.ok(ApiResponse.ofSuccess(ResponseCode.OK));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,13 @@ public Token saveAndGetToken(final Long userId) {
}

@Transactional
public Token reissue(final Long userId, final String existingRefreshToken) {
public Token reissue(final String existingRefreshToken) {
tokenProvider.validateRefreshToken(existingRefreshToken);
invalidate(existingRefreshToken);
return saveAndGetToken(userId);

final RefreshToken refreshToken = getRefreshTokenByToken(existingRefreshToken);
refreshTokenRepository.delete(refreshToken);

return saveAndGetToken(refreshToken.getUser().getId());
}

@Transactional
Expand All @@ -60,4 +63,9 @@ private void validateExistsRefreshToken(final String existingRefreshToken) {
throw new JobNoteException(NOT_FOUND_REFRESH_TOKEN);
}
}

private RefreshToken getRefreshTokenByToken(final String token) {
return refreshTokenRepository.findByToken(token)
.orElseThrow(() -> new JobNoteException(NOT_FOUND_REFRESH_TOKEN));
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/jobnote/global/common/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public abstract class Constants {
public static final String[] WHITELIST = {
"/api/v1/users/signup/**",
"/api/v1/users/login",
"/api/v1/users/reissue",
"/api/v1/users/reset-password",
"/api/v1/verification-emails/**",
"/oauth2/**",
Expand All @@ -38,6 +39,7 @@ public abstract class Constants {
"/api/v1/users/signup",
"/api/v1/users/signup/social",
"/api/v1/users/login",
"/api/v1/users/reissue",
"/api/v1/users/reset-password",
"/api/v1/verification-emails",
"/api/v1/verification-emails/signup/verify",
Expand Down
Loading