refactor: deleteRefreshToken 메서드 람다활용 문법으로 변경

This commit is contained in:
dongHyo
2022-06-30 16:28:27 +09:00
parent 01db29c208
commit 6b3c68ee43
4 changed files with 22 additions and 13 deletions

View File

@@ -45,10 +45,10 @@ public class AuthController {
@PostMapping("/logout")
public ResponseEntity<LogoutResponse> 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() {

View File

@@ -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());
}
}

View File

@@ -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<RefreshToken> 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) {

View File

@@ -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);
}