From 6b3c68ee436f6b649b8d5dba45f2ddb9ce0071c1 Mon Sep 17 00:00:00 2001 From: dongHyo Date: Thu, 30 Jun 2022 16:28:27 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20deleteRefreshToken=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EB=9E=8C=EB=8B=A4=ED=99=9C=EC=9A=A9=20?= =?UTF-8?q?=EB=AC=B8=EB=B2=95=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/user/application/AuthController.java | 4 ++-- .../application/response/LogoutResponse.java | 11 +++++++++++ .../user/service/AuthenticationServiceImpl.java | 17 +++++++---------- .../interfaces/AuthenticationService.java | 3 ++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/server/src/main/java/com/ticketing/server/user/application/AuthController.java b/server/src/main/java/com/ticketing/server/user/application/AuthController.java index 589a8ed..e722e6f 100644 --- a/server/src/main/java/com/ticketing/server/user/application/AuthController.java +++ b/server/src/main/java/com/ticketing/server/user/application/AuthController.java @@ -45,10 +45,10 @@ public class AuthController { @PostMapping("/logout") public ResponseEntity logout(@AuthenticationPrincipal UserDetails userRequest) { - authenticationService.deleteRefreshToken(userRequest.getUsername()); + LogoutResponse logoutResponse = authenticationService.deleteRefreshToken(userRequest.getUsername()); return ResponseEntity.status(HttpStatus.OK) - .body(LogoutResponse.from(userRequest.getUsername())); + .body(logoutResponse); } private HttpHeaders getHttpHeaders() { diff --git a/server/src/main/java/com/ticketing/server/user/application/response/LogoutResponse.java b/server/src/main/java/com/ticketing/server/user/application/response/LogoutResponse.java index fcf7bed..e2b2bf9 100644 --- a/server/src/main/java/com/ticketing/server/user/application/response/LogoutResponse.java +++ b/server/src/main/java/com/ticketing/server/user/application/response/LogoutResponse.java @@ -1,5 +1,6 @@ package com.ticketing.server.user.application.response; +import com.ticketing.server.global.redis.RefreshToken; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @@ -8,10 +9,20 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public class LogoutResponse { + private Long refreshTokenId; private String email; + private String refreshToken; + + private LogoutResponse(String email) { + this.email = email; + } public static LogoutResponse from(String email) { return new LogoutResponse(email); } + public static LogoutResponse from(RefreshToken refreshToken) { + return new LogoutResponse(refreshToken.getId(), refreshToken.getEmail(), refreshToken.getToken()); + } + } diff --git a/server/src/main/java/com/ticketing/server/user/service/AuthenticationServiceImpl.java b/server/src/main/java/com/ticketing/server/user/service/AuthenticationServiceImpl.java index 553817a..cbfca8f 100644 --- a/server/src/main/java/com/ticketing/server/user/service/AuthenticationServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/user/service/AuthenticationServiceImpl.java @@ -9,9 +9,9 @@ import com.ticketing.server.global.redis.RefreshRedisRepository; import com.ticketing.server.global.redis.RefreshToken; import com.ticketing.server.global.security.jwt.JwtProperties; import com.ticketing.server.global.security.jwt.JwtProvider; +import com.ticketing.server.user.application.response.LogoutResponse; import com.ticketing.server.user.application.response.TokenDto; import com.ticketing.server.user.service.interfaces.AuthenticationService; -import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; @@ -82,15 +82,12 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override @Transactional - public boolean deleteRefreshToken(String email) { - Optional findTokenEntity = refreshRedisRepository.findByEmail(email); - - if (findTokenEntity.isPresent()) { - refreshRedisRepository.delete(findTokenEntity.get()); - return true; - } - - return false; + public LogoutResponse deleteRefreshToken(String email) { + return refreshRedisRepository.findByEmail(email) + .map(tokenDto -> { + refreshRedisRepository.delete(tokenDto); + return LogoutResponse.from(tokenDto); + }).orElseGet(() -> LogoutResponse.from(email)); } private String resolveToken(String bearerToken) { diff --git a/server/src/main/java/com/ticketing/server/user/service/interfaces/AuthenticationService.java b/server/src/main/java/com/ticketing/server/user/service/interfaces/AuthenticationService.java index d51d5eb..e3fc99d 100644 --- a/server/src/main/java/com/ticketing/server/user/service/interfaces/AuthenticationService.java +++ b/server/src/main/java/com/ticketing/server/user/service/interfaces/AuthenticationService.java @@ -1,5 +1,6 @@ package com.ticketing.server.user.service.interfaces; +import com.ticketing.server.user.application.response.LogoutResponse; import com.ticketing.server.user.application.response.TokenDto; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -9,6 +10,6 @@ public interface AuthenticationService { TokenDto reissueTokenDto(String bearerRefreshToken); - boolean deleteRefreshToken(String email); + LogoutResponse deleteRefreshToken(String email); }