Skip to content

Commit

Permalink
[merge] 코드 리팩토링 - #102
Browse files Browse the repository at this point in the history
  • Loading branch information
sjk4618 authored Jul 15, 2024
2 parents 1802435 + b8e67e8 commit e5aaed6
Show file tree
Hide file tree
Showing 12 changed files with 74 additions and 102 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
12 changes: 0 additions & 12 deletions dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class UserController {
public ResponseEntity<UserJwtInfoRes> signUp(@RequestHeader(AUTHORIZATION) final String token,
@RequestPart("userSignUpReq") final UserSignUpReq userSignUPReq,
@RequestPart("image") MultipartFile image,
@RequestPart("tag") List<DateTagType> tag //todo: 열람 데이트 코스 전체 조회 API 머지 후, TagEnum으로 변경해야됨
@RequestPart("tag") List<DateTagType> tag
) throws IOException {
UserJwtInfoRes userSignUpRes = authService.signUp(token, userSignUPReq, image, tag);
return ResponseEntity.status(HttpStatus.CREATED).body(userSignUpRes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

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

Expand All @@ -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) { //애플 유저면 애플이랑 연결 끊기
Expand All @@ -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());
}

Expand Down Expand Up @@ -166,7 +164,7 @@ private void validateUserTagSize(final List<DateTagType> userTags) {
}
}

public RefreshToken getRefreshTokenByToken(final String refreshToken) {
private RefreshToken getRefreshTokenByToken(final String refreshToken) {
try {
return refreshTokenRepository.findByToken(refreshToken)
.orElseThrow(() -> new UnauthorizedException(FailureCode.UNAUTHORIZED));
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@

@Repository
public interface AdvertisementRepository extends JpaRepository<Advertisement, Long> {
@Query("SELECT a FROM Advertisement a ORDER BY a.createdAt DESC")
@Query("SELECT a FROM advertisements a ORDER BY a.createdAt DESC")
List<Advertisement> findTop5ByOrderByCreatedDateDesc(Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ public interface RefreshTokenRepository extends JpaRepository<RefreshToken, Stri

Optional<RefreshToken> findByToken(String token);

void deleteByUserId(final Long userId);
void deleteRefreshTokenByUserId(final Long userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
// }
// }
//}

0 comments on commit e5aaed6

Please sign in to comment.