feat(로그아웃 및 점주 정보 API 구현): 고객 고유번호 리스트로 고객 가져오기 테스트
- 리프레시 토큰이 제대로 삭제되지 않는 문제 해결 (Path 및 maxAge 값 설정) - 점주 고유번호로 점주 정보 가져오는 API 추가
This commit is contained in:
@@ -54,13 +54,15 @@ public class RefreshTokenServiceImpl implements RefreshTokenService {
|
||||
|
||||
// refresh token 검증
|
||||
String findRefreshTokenId = findRefreshToken.getRefreshTokenId();
|
||||
if (!jwtTokenProvider.validateJwtToken(refreshToken) ||
|
||||
!jwtTokenProvider.equalRefreshTokenId(findRefreshTokenId, refreshToken)) {
|
||||
|
||||
if (!jwtTokenProvider.validateJwtToken(refreshToken)) {
|
||||
refreshTokenRedisRepository.delete(findRefreshToken);
|
||||
throw new RefreshTokenNotValidException("Not validate jwt token = " + refreshToken);
|
||||
}
|
||||
|
||||
if (!jwtTokenProvider.equalRefreshTokenId(findRefreshTokenId, refreshToken)) {
|
||||
throw new RefreshTokenNotValidException("redis 의 값과 일치하지 않습니다. = " + refreshToken);
|
||||
}
|
||||
|
||||
User findUser = userRepository.findById(Long.valueOf(userId))
|
||||
.orElseThrow(() -> new NotExistUserException("유저 고유 번호 : " + userId + "는 없는 유저입니다."));
|
||||
|
||||
@@ -69,7 +71,7 @@ public class RefreshTokenServiceImpl implements RefreshTokenService {
|
||||
List<String> roles = authentication.getAuthorities()
|
||||
.stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
|
||||
|
||||
String newAccessToken = jwtTokenProvider.createJwtAccessToken(userId, "/refreshToken", roles);
|
||||
String newAccessToken = jwtTokenProvider.createJwtAccessToken(userId, "/reissu", roles);
|
||||
Date expiredTime = jwtTokenProvider.getExpiredTime(newAccessToken);
|
||||
|
||||
return JwtTokenDto.builder()
|
||||
|
||||
@@ -29,8 +29,8 @@ public class AuthController {
|
||||
private final CookieProvider cookieProvider;
|
||||
|
||||
@GetMapping("/reissue")
|
||||
public ResponseEntity<Result> refreshToken(@RequestHeader("X-AUTH-TOKEN") String accessToken,
|
||||
@CookieValue("refresh-token") String refreshToken) {
|
||||
public ResponseEntity<Result> refreshToken(@RequestHeader(value = "X-AUTH-TOKEN") String accessToken,
|
||||
@CookieValue(value = "refresh-token") String refreshToken) {
|
||||
JwtTokenDto jwtTokenDto = refreshTokenService.refreshJwtToken(accessToken, refreshToken);
|
||||
|
||||
ResponseCookie responseCookie = cookieProvider.createRefreshTokenCookie(refreshToken);
|
||||
@@ -55,8 +55,7 @@ public class AuthController {
|
||||
}
|
||||
|
||||
@PostMapping("/logout")
|
||||
public ResponseEntity<Result> logout(@RequestHeader("X-AUTH-TOKEN") String accessToken,
|
||||
@RequestHeader("REFRESH-TOKEN") String refreshToken) {
|
||||
public ResponseEntity<Result> logout(@RequestHeader("X-AUTH-TOKEN") String accessToken) {
|
||||
|
||||
refreshTokenService.logoutToken(accessToken);
|
||||
|
||||
@@ -64,7 +63,7 @@ public class AuthController {
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
.header(HttpHeaders.SET_COOKIE, refreshCookie.toString())
|
||||
.body(Result.createErrorResult(""));
|
||||
.body(Result.createSuccessResult(""));
|
||||
}
|
||||
|
||||
@GetMapping("/check/access-token")
|
||||
|
||||
@@ -17,8 +17,8 @@ public class CustomerDto extends UserDto {
|
||||
|
||||
@Builder
|
||||
public CustomerDto(Long id, String email, String password, String name,
|
||||
String phoneNumber, String dtype, String refreshTokenId) {
|
||||
super(id, email, password, name, phoneNumber, dtype, refreshTokenId);
|
||||
String phoneNumber, String dtype) {
|
||||
super(id, email, password, name, phoneNumber, dtype);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.justpickup.userservice.domain.user.dto;
|
||||
|
||||
import com.justpickup.userservice.domain.user.entity.StoreOwner;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -9,8 +10,13 @@ public class StoreOwnerDto extends UserDto {
|
||||
|
||||
@Builder
|
||||
public StoreOwnerDto(Long id, String email, String password, String name,
|
||||
String phoneNumber, String dtype, String businessNumber, String refreshTokenId) {
|
||||
super(id, email, password, name, phoneNumber, dtype, refreshTokenId);
|
||||
String phoneNumber, String dtype, String businessNumber) {
|
||||
super(id, email, password, name, phoneNumber, dtype);
|
||||
this.businessNumber = businessNumber;
|
||||
}
|
||||
|
||||
public static StoreOwnerDto of(StoreOwner storeOwner) {
|
||||
return new StoreOwnerDto(storeOwner.getId(), storeOwner.getEmail(), storeOwner.getPassword(),
|
||||
storeOwner.getName(), storeOwner.getPhoneNumber(), storeOwner.getDtype(), storeOwner.getBusinessNumber());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ public abstract class UserDto {
|
||||
private String name;
|
||||
private String phoneNumber;
|
||||
private String dtype;
|
||||
private String refreshTokenId;
|
||||
|
||||
// == 생성 메소드 == //
|
||||
public UserDto(Customer customer) {
|
||||
@@ -23,13 +22,12 @@ public abstract class UserDto {
|
||||
}
|
||||
|
||||
public UserDto(Long id, String email, String password, String name, String phoneNumber,
|
||||
String dtype, String refreshTokenId) {
|
||||
String dtype) {
|
||||
this.id = id;
|
||||
this.email = email;
|
||||
this.password = password;
|
||||
this.name = name;
|
||||
this.phoneNumber = phoneNumber;
|
||||
this.dtype = dtype;
|
||||
this.refreshTokenId = refreshTokenId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ public interface UserService {
|
||||
CustomerDto findCustomerByUserId(Long userId);
|
||||
void saveStoreOwner(StoreOwnerDto storeOwnerDto);
|
||||
List<CustomerDto> findCustomerByUserIds(List<Long> userIds);
|
||||
StoreOwnerDto findOwnerById(Long userId);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.justpickup.userservice.domain.user.entity.User;
|
||||
import com.justpickup.userservice.domain.user.exception.DuplicateUserEmail;
|
||||
import com.justpickup.userservice.domain.user.exception.NotExistUserException;
|
||||
import com.justpickup.userservice.domain.user.repository.CustomerRepository;
|
||||
import com.justpickup.userservice.domain.user.repository.StoreOwnerRepository;
|
||||
import com.justpickup.userservice.domain.user.repository.UserRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -32,6 +33,7 @@ import java.util.stream.Collectors;
|
||||
public class UserServiceImpl implements UserService, UserDetailsService {
|
||||
|
||||
private final CustomerRepository customerRepository;
|
||||
private final StoreOwnerRepository storeOwnerRepository;
|
||||
private final UserRepository userRepository;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
@@ -77,4 +79,12 @@ public class UserServiceImpl implements UserService, UserDetailsService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public StoreOwnerDto findOwnerById(Long userId) {
|
||||
StoreOwner storeOwner = storeOwnerRepository.findById(userId)
|
||||
.orElseThrow(() -> new NotExistUserException(userId + "는 존재하지 않은 사용자입니다."));
|
||||
|
||||
return StoreOwnerDto.of(storeOwner);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
@GetMapping("/customer/")
|
||||
public ResponseEntity getCustomerByToken(@Valid @RequestHeader(value = "user-id") String userId ) {
|
||||
@GetMapping("/customer")
|
||||
public ResponseEntity getCustomerByToken(@Valid @RequestHeader(value="user-id") String userId) {
|
||||
|
||||
CustomerDto customerDto = userService.findCustomerByUserId(Long.parseLong(userId));
|
||||
|
||||
@@ -90,6 +90,26 @@ public class UserController {
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/store-owner")
|
||||
public ResponseEntity<Result> getStoreOwnerByToken(@RequestHeader(value="user-id") String userHeader) {
|
||||
Long userId = Long.valueOf(userHeader);
|
||||
|
||||
StoreOwnerDto storeOwnerDto = userService.findOwnerById(userId);
|
||||
|
||||
return ResponseEntity.ok(Result.createSuccessResult(storeOwnerDto));
|
||||
}
|
||||
|
||||
@Data
|
||||
static class StoreOwnerByTokenResponse {
|
||||
private Long id;
|
||||
private String name;
|
||||
|
||||
public StoreOwnerByTokenResponse(StoreOwnerDto dto) {
|
||||
this.id = dto.getId();
|
||||
this.name = dto.getName();
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/store-owner")
|
||||
public ResponseEntity<Result> joinStoreOwner(@Valid @RequestBody JoinStoreOwnerRequest joinRequest) {
|
||||
// 회원 가입
|
||||
|
||||
@@ -22,6 +22,8 @@ public class CookieProvider {
|
||||
|
||||
public ResponseCookie removeRefreshTokenCookie() {
|
||||
return ResponseCookie.from("refresh-token", null)
|
||||
.maxAge(0)
|
||||
.path("/")
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user