diff --git a/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java b/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java index 0d87a060..99421e63 100644 --- a/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java +++ b/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java @@ -1,7 +1,5 @@ package org.dateroad.advertisement.dto.response; - import org.dateroad.advertisement.domain.AdTagType; - import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDate; import java.util.List; diff --git a/dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java b/dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java index fff6f2cf..bea4fb2f 100644 --- a/dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java +++ b/dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java @@ -1,6 +1,7 @@ package org.dateroad.advertisement.service; import java.util.List; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.dateroad.adImage.domain.AdImage; import org.dateroad.adImage.repository.AdImageRepository; diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java deleted file mode 100644 index bcd369f8..00000000 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.dateroad.auth.jwt; - -import org.dateroad.code.FailureCode; -import org.dateroad.exception.UnauthorizedException; - -public class JwtValidator { - public void equalRefreshToken(String refreshToken, String storedRefreshToken) { - if (!refreshToken.equals(storedRefreshToken)) { - throw new UnauthorizedException(FailureCode.UNAUTHORIZED); - } - } -} diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java deleted file mode 100644 index acfe7971..00000000 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.dateroad.auth.jwt; - -public enum TokenType { - ACCESS_TOKEN, - REFRESH_TOKEN -} diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java index cd5420ec..06995140 100644 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java +++ b/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java @@ -34,10 +34,6 @@ public String generateRefreshToken(final long userId) { return token; } - public void deleteRefreshToken(final Long userId) { - refreshTokenRepository.deleteByUserId(userId); - } - private SecureRandom createSecureRandom() { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); diff --git a/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java b/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java index 767492a1..acbef091 100644 --- a/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java +++ b/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java @@ -251,10 +251,10 @@ public CourseGetDetailRes getCourseDetail(final Long userId, final Long courseId boolean isCourseMine = courseRepository.existsByUserId(foundUser.getId()); - boolean isUserLiked = likeRepository.existsByUserIdAndCourseId(foundUser.getId(), foundCourse.getId()); + boolean isUserLiked = false; - if (isCourseMine) { - isUserLiked = false; + if (!isCourseMine) { + isUserLiked = likeRepository.existsByUserIdAndCourseId(foundUser.getId(), foundCourse.getId()); } return CourseGetDetailRes.of(foundCourse, diff --git a/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java b/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java index 0b468d88..bddf0bb5 100644 --- a/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java +++ b/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java @@ -33,7 +33,7 @@ public class UserController { public ResponseEntity signUp(@RequestHeader(AUTHORIZATION) final String token, @RequestPart("userSignUpReq") final UserSignUpReq userSignUPReq, @RequestPart("image") MultipartFile image, - @RequestPart("tag") List tag //todo: 열람 데이트 코스 전체 조회 API 머지 후, TagEnum으로 변경해야됨 + @RequestPart("tag") List tag ) throws IOException { UserJwtInfoRes userSignUpRes = authService.signUp(token, userSignUPReq, image, tag); return ResponseEntity.status(HttpStatus.CREATED).body(userSignUpRes); diff --git a/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java b/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java index 3b9ef75e..11f97558 100644 --- a/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java +++ b/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java @@ -59,7 +59,7 @@ public UserJwtInfoRes signUp(final String token, final UserSignUpReq userSignUpR User newUser = saveUser(userSignUpReq.name(), cachePath + s3Service.uploadImage(path, image), userSignUpReq.platform(), platformUserId); saveUserTag(newUser, tag); - Token issuedToken = jwtProvider.issueToken(newUser.getId()); + Token issuedToken = issueToken(newUser.getId()); return UserJwtInfoRes.of(newUser.getId(), issuedToken.accessToken(), issuedToken.refreshToken()); } @@ -68,7 +68,7 @@ public UserJwtInfoRes signIn(final String token, final UserSignInReq userSignInR String platformUserId = getUserPlatformId(userSignInReq.platform(), token); User foundUser = getUserByPlatformAndPlatformUserId(userSignInReq.platform(), platformUserId); deleteRefreshToken(foundUser.getId()); - Token issuedToken = jwtProvider.issueToken(foundUser.getId()); + Token issuedToken = issueToken(foundUser.getId()); return UserJwtInfoRes.of(foundUser.getId(), issuedToken.accessToken(), issuedToken.refreshToken()); } @@ -77,16 +77,15 @@ public UserJwtInfoRes reissue(final String refreshToken) { RefreshToken foundRefreshToken = getRefreshTokenByToken(refreshToken); jwtProvider.validateRefreshToken(foundRefreshToken.getExpiredAt()); Long userId = foundRefreshToken.getUserId(); - Token newToken = jwtProvider.issueToken(userId); + deleteRefreshToken(userId); + Token newToken = issueToken(userId); return UserJwtInfoRes.of(userId, newToken.accessToken(), newToken.refreshToken()); } @Transactional public void withdraw(final Long userId, final AppleWithdrawAuthCodeReq AppleWithdrawAuthCodeReq) { - //todo: #45브랜치 머지후, 메서드 이용 User foundUser = userRepository.findById(userId).orElseThrow(EntityNotFoundException::new); - if (foundUser.getPlatForm() == Platform.KAKAO) { //카카오 유저면 카카오와 연결 끊기 kakaoFeignProvider.unLinkWithKakao(foundUser.getPlatformUserId()); } else if (foundUser.getPlatForm() == Platform.APPLE) { //애플 유저면 애플이랑 연결 끊기 @@ -95,8 +94,7 @@ public void withdraw(final Long userId, final AppleWithdrawAuthCodeReq AppleWith throw new InvalidValueException(FailureCode.INVALID_PLATFORM_TYPE); } - //todo: #45브랜치 머지후, 메서드 이용 - refreshTokenRepository.deleteByUserId(foundUser.getId()); + deleteRefreshToken(foundUser.getId()); userRepository.deleteById(foundUser.getId()); } @@ -166,7 +164,7 @@ private void validateUserTagSize(final List userTags) { } } - public RefreshToken getRefreshTokenByToken(final String refreshToken) { + private RefreshToken getRefreshTokenByToken(final String refreshToken) { try { return refreshTokenRepository.findByToken(refreshToken) .orElseThrow(() -> new UnauthorizedException(FailureCode.UNAUTHORIZED)); @@ -181,6 +179,11 @@ public RefreshToken getRefreshTokenByToken(final String refreshToken) { //refreshToken 삭제 private void deleteRefreshToken(final long userId) { - refreshTokenRepository.deleteByUserId(userId); + refreshTokenRepository.deleteRefreshTokenByUserId(userId); + } + + //토큰 발급 + Token issueToken(final Long userId) { + return jwtProvider.issueToken(userId); } } diff --git a/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java b/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java index 69022953..3dc154cc 100644 --- a/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java +++ b/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java @@ -10,6 +10,6 @@ @Repository public interface AdvertisementRepository extends JpaRepository { - @Query("SELECT a FROM Advertisement a ORDER BY a.createdAt DESC") + @Query("SELECT a FROM advertisements a ORDER BY a.createdAt DESC") List findTop5ByOrderByCreatedDateDesc(Pageable pageable); } diff --git a/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java b/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java index 63f2781c..dc9d76a3 100644 --- a/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java +++ b/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java @@ -9,5 +9,5 @@ public interface RefreshTokenRepository extends JpaRepository findByToken(String token); - void deleteByUserId(final Long userId); + void deleteRefreshTokenByUserId(final Long userId); } diff --git a/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java b/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java index 3e772f2e..34a10791 100644 --- a/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java +++ b/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java @@ -37,7 +37,6 @@ public void revokeUser(final String authCode) { String appleAccessToken = getAppleAccess(secretKey, authCode); appleFeignApi.revokeUser(secretKey, appleAccessToken, appleProperties.getClientId(), "access_token"); } catch (IOException e) { - System.out.println(e); throw new UnauthorizedException(FailureCode.INVALID_APPLE_TOKEN_ACCESS); } } diff --git a/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java b/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java index 6753486d..5b3798f6 100644 --- a/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java +++ b/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java @@ -1,62 +1,55 @@ -package org.dateroad.feign.kakao; - -import com.fasterxml.jackson.databind.ObjectMapper; -import feign.FeignException; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dateroad.code.FailureCode; -import org.dateroad.exception.UnauthorizedException; -import org.dateroad.feign.kakao.dto.response.KakaoErrorRes; -import org.dateroad.feign.kakao.dto.response.KakaoAccessTokenInfoRes; -import org.springframework.stereotype.Component; - -import java.io.IOException; - -@Slf4j -@RequiredArgsConstructor -@Component -public class KakaoPlatformUserIdProvider { - private final KakaoFeignApi kakaoFeignApi; - private final ObjectMapper objectMapper; - private static final String TOKEN_TYPE = "Bearer "; - - //AuthService에서 호출 : 카카오에서 주는 userId 받아오기 - public String getKakaoPlatformUserId(final String accessToken) { - String kakaoAccessTokenWithTokenType = getAccessTokenWithTokenType(accessToken); - KakaoAccessTokenInfoRes kakaoAccessTokenInfoRes = getKakaoAccessTokenInfo(kakaoAccessTokenWithTokenType); - return String.valueOf(kakaoAccessTokenInfoRes.id()); - } - - private KakaoAccessTokenInfoRes getKakaoAccessTokenInfo(final String token) { - try { - return kakaoFeignApi.getKakaoPlatformUserId(token); - } catch (FeignException e) { - log.error("Kakao feign exception : ", e); - - //kakaoResponseDTO로 변경 - KakaoErrorRes errorResponse = convertToKakaoErrorResponse(e.contentUTF8()); - - //카카오에서 주는 에러 코드가 -1이면 카카오 내부 에러, 나머지는 카카오 액세스 토큰 에러 - if (errorResponse.code() == -1) { - log.error("Kakao feign exception : ", e); - throw new UnauthorizedException(FailureCode.KAKAO_INTERNER_ERROR); - } else { - log.error("feign exception : ", e); - throw new UnauthorizedException(FailureCode.INVALID_KAKAO_TOKEN); - } - } - } - - private String getAccessTokenWithTokenType(String accessToken) { - return TOKEN_TYPE + accessToken; - } - - private KakaoErrorRes convertToKakaoErrorResponse(String responseBody) { - try { - return objectMapper.readValue(responseBody, KakaoErrorRes.class); - } catch (IOException e) { - log.error("Convert To KakaoErrorResponse Error : ", e); - throw new UnauthorizedException(FailureCode.UNAUTHORIZED); - } - } -} +//package org.dateroad.feign.kakao; +// +//import com.fasterxml.jackson.databind.ObjectMapper; +//import feign.FeignException; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.dateroad.code.FailureCode; +//import org.dateroad.exception.UnauthorizedException; +//import org.dateroad.feign.kakao.dto.response.KakaoErrorRes; +//import org.dateroad.feign.kakao.dto.response.KakaoAccessTokenInfoRes; +//import org.springframework.stereotype.Component; +// +//import java.io.IOException; +// +//@Slf4j +//@RequiredArgsConstructor +//@Component +//public class KakaoPlatformUserIdProvider { +// private final KakaoFeignApi kakaoFeignApi; +// private final ObjectMapper objectMapper; +// private static final String TOKEN_TYPE = "Bearer "; +// +// private KakaoAccessTokenInfoRes getKakaoAccessTokenInfo(final String token) { +// try { +// return kakaoFeignApi.getKakaoPlatformUserId(token); +// } catch (FeignException e) { +// log.error("Kakao feign exception : ", e); +// +// //kakaoResponseDTO로 변경 +// KakaoErrorRes errorResponse = convertToKakaoErrorResponse(e.contentUTF8()); +// +// //카카오에서 주는 에러 코드가 -1이면 카카오 내부 에러, 나머지는 카카오 액세스 토큰 에러 +// if (errorResponse.code() == -1) { +// log.error("Kakao feign exception : ", e); +// throw new UnauthorizedException(FailureCode.KAKAO_INTERNER_ERROR); +// } else { +// log.error("feign exception : ", e); +// throw new UnauthorizedException(FailureCode.INVALID_KAKAO_TOKEN); +// } +// } +// } +// +// private String getAccessTokenWithTokenType(String accessToken) { +// return TOKEN_TYPE + accessToken; +// } +// +// private KakaoErrorRes convertToKakaoErrorResponse(String responseBody) { +// try { +// return objectMapper.readValue(responseBody, KakaoErrorRes.class); +// } catch (IOException e) { +// log.error("Convert To KakaoErrorResponse Error : ", e); +// throw new UnauthorizedException(FailureCode.UNAUTHORIZED); +// } +// } +//}