diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/jwt/service/RefreshTokenServiceImpl.java b/user-service/src/main/java/com/justpickup/userservice/domain/jwt/service/RefreshTokenServiceImpl.java index 115a9ad..944bf17 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/jwt/service/RefreshTokenServiceImpl.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/jwt/service/RefreshTokenServiceImpl.java @@ -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 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() diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/jwt/web/AuthController.java b/user-service/src/main/java/com/justpickup/userservice/domain/jwt/web/AuthController.java index f679a11..17a9f4d 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/jwt/web/AuthController.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/jwt/web/AuthController.java @@ -29,8 +29,8 @@ public class AuthController { private final CookieProvider cookieProvider; @GetMapping("/reissue") - public ResponseEntity refreshToken(@RequestHeader("X-AUTH-TOKEN") String accessToken, - @CookieValue("refresh-token") String refreshToken) { + public ResponseEntity 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 logout(@RequestHeader("X-AUTH-TOKEN") String accessToken, - @RequestHeader("REFRESH-TOKEN") String refreshToken) { + public ResponseEntity 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") diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/CustomerDto.java b/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/CustomerDto.java index a1dab8b..560f6bd 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/CustomerDto.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/CustomerDto.java @@ -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); } } diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/StoreOwnerDto.java b/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/StoreOwnerDto.java index 38004c2..b41232d 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/StoreOwnerDto.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/StoreOwnerDto.java @@ -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()); + } } diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/UserDto.java b/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/UserDto.java index dbb65d9..f7e6cad 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/UserDto.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/user/dto/UserDto.java @@ -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; } } diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserService.java b/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserService.java index 692a158..5a120c6 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserService.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserService.java @@ -9,4 +9,5 @@ public interface UserService { CustomerDto findCustomerByUserId(Long userId); void saveStoreOwner(StoreOwnerDto storeOwnerDto); List findCustomerByUserIds(List userIds); + StoreOwnerDto findOwnerById(Long userId); } diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserServiceImpl.java b/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserServiceImpl.java index 379d882..1c0aade 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserServiceImpl.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/user/service/UserServiceImpl.java @@ -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); + } + } diff --git a/user-service/src/main/java/com/justpickup/userservice/domain/user/web/UserController.java b/user-service/src/main/java/com/justpickup/userservice/domain/user/web/UserController.java index 9a7cfe3..52392f4 100644 --- a/user-service/src/main/java/com/justpickup/userservice/domain/user/web/UserController.java +++ b/user-service/src/main/java/com/justpickup/userservice/domain/user/web/UserController.java @@ -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 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 joinStoreOwner(@Valid @RequestBody JoinStoreOwnerRequest joinRequest) { // 회원 가입 diff --git a/user-service/src/main/java/com/justpickup/userservice/global/utils/CookieProvider.java b/user-service/src/main/java/com/justpickup/userservice/global/utils/CookieProvider.java index 3290a33..f6fe6c7 100644 --- a/user-service/src/main/java/com/justpickup/userservice/global/utils/CookieProvider.java +++ b/user-service/src/main/java/com/justpickup/userservice/global/utils/CookieProvider.java @@ -22,6 +22,8 @@ public class CookieProvider { public ResponseCookie removeRefreshTokenCookie() { return ResponseCookie.from("refresh-token", null) + .maxAge(0) + .path("/") .build(); }