Skip to content

Commit

Permalink
docs: 자바독 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
dlrudgjs104 committed Aug 2, 2024
1 parent 97cc5fa commit 5beb8da
Show file tree
Hide file tree
Showing 29 changed files with 296 additions and 299 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,26 @@
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

/**
* @author 김태환
* JWT 필터 클래스입니다.
*/
@RequiredArgsConstructor
public class JwtFilter extends OncePerRequestFilter {
private final JwtUtils jwtUtils;
private final TokenReissueClient tokenReissueClient;
private final Long accessTokenExpiresIn;
private final Long refreshTokenExpiresIn;

/**
* 요청을 필터링하고 JWT 토큰을 검사합니다.
*
* @param request HTTP 요청 객체.
* @param response HTTP 응답 객체.
* @param filterChain 필터 체인 객체.
* @throws ServletException 서블릿 예외.
* @throws IOException 입출력 예외.
*/
@Override
protected void doFilterInternal(
@NonNull HttpServletRequest request,
Expand Down Expand Up @@ -103,6 +116,11 @@ protected void doFilterInternal(
filterChain.doFilter(request, response);
}

/**
* 이미 필터링된 속성의 이름을 반환합니다.
*
* @return 이미 필터링된 속성의 이름.
*/
@Override
@NonNull
protected String getAlreadyFilteredAttributeName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,32 @@
import io.jsonwebtoken.security.SecurityException;
import lombok.extern.slf4j.Slf4j;

/**
* @author 김태환
* JWT 유틸리티 클래스입니다.
*/
@Slf4j
@Component
public class JwtUtils {
private final SecretKey secretKey;

/**
* 주어진 비밀 키를 사용하여 {@link SecretKey} 객체를 초기화합니다.
*
* @param secret 비밀 키 문자열.
*/
public JwtUtils(@Value("${spring.jwt.secret}") String secret) {
secretKey = new SecretKeySpec(
secret.getBytes(StandardCharsets.UTF_8), Jwts.SIG.HS256.key().build().getAlgorithm()
);
}

/**
* 주어진 토큰에서 claims 를 추출합니다.
*
* @param token JWT 토큰.
* @return {@link Claims} 객체.
*/
private Claims getClaims(String token) {
return Jwts.parser()
.verifyWith(secretKey)
Expand All @@ -37,17 +52,35 @@ private Claims getClaims(String token) {
.getPayload();
}

/**
* JWT 토큰에서 사용자 ID를 추출합니다.
*
* @param token JWT 토큰.
* @return 사용자 ID.
*/
public Long getUserIdFromToken(String token) {
return getClaims(token).get("userId", Long.class);
}

/**
* JWT 토큰에서 사용자 역할을 추출합니다.
*
* @param token JWT 토큰.
* @return 사용자 역할 목록.
*/
public List<String> getUserRolesFromToken(String token) {
Claims claims = getClaims(token);
return ((List<?>)claims.get("roles")).stream()
.map(Object::toString)
.collect(Collectors.toList());
.toList();
}

/**
* JWT 토큰의 유효성을 검사합니다.
*
* @param token JWT 토큰.
* @return 유효성 검사 결과에 대한 오류 메시지 또는 null (토큰이 유효한 경우).
*/
public String validateToken(String token) {
String errorMessage = null;
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.nhnacademy.bookstorecoupon.bookcoupon.domain.entity.BookCoupon;

public interface BookCouponRepository extends JpaRepository<BookCoupon, Long>, CustomBookCouponRepository {

}


Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,14 @@

import com.nhnacademy.bookstorecoupon.bookcoupon.domain.entity.BookCoupon;


/**
* @author 이기훈
* 도서 쿠폰 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
*/

public interface CustomBookCouponRepository {


/**
* 도서 쿠폰 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
* 도서 쿠폰 테이블에 있는 정보를 querydsl 을 통해 가져오는 custom repository
* @return 쿠폰정책 아이디, 북 아이디, 도서제목
*/
Map<Long, BookCoupon.BookInfo> fetchBookIdMap();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,4 @@
import com.nhnacademy.bookstorecoupon.categorycoupon.domain.entity.CategoryCoupon;

public interface CategoryCouponRepository extends JpaRepository<CategoryCoupon, Long>, CustomCategoryCouponRepository {

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,15 @@

import com.nhnacademy.bookstorecoupon.categorycoupon.domain.entity.CategoryCoupon;



/**
* @author 이기훈
* 카테고리 쿠폰 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
*/
public interface CustomCategoryCouponRepository {

/**
* 카테고리 쿠폰 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
* 카테고리 쿠폰 테이블에 있는 정보를 querydsl 을 통해 가져오는 custom repository
* @return 쿠폰정책 아이디, 카테고리 아이디, 카테고리 이름
*/
Map<Long, CategoryCoupon.CategoryInfo> fetchCategoryIdMap();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.entity.QCouponPolicy;
import com.querydsl.jpa.impl.JPAQueryFactory;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class CustomCategoryCouponRepositoryImpl implements CustomCategoryCouponRepository {
private final JPAQueryFactory queryFactory;

public CustomCategoryCouponRepositoryImpl(JPAQueryFactory queryFactory) {
this.queryFactory = queryFactory;
}

/**
*{@inheritDoc}
*/
@Override
public Map<Long, CategoryCoupon.CategoryInfo> fetchCategoryIdMap() {
QCouponPolicy couponPolicy = QCouponPolicy.couponPolicy;
Expand All @@ -33,5 +35,4 @@ public Map<Long, CategoryCoupon.CategoryInfo> fetchCategoryIdMap() {
));
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,19 @@
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;



import lombok.RequiredArgsConstructor;

/**
* @author 이기훈
* 쿠폰정책관련 기능을 수행하는 컨트롤러입니다.
*/
@Tag(name = "CouponPolicy", description = "쿠폰 정책관련 API")
@RestController
@RequiredArgsConstructor
@RequestMapping("/coupons/policies")
public class CouponPolicyController {
private final CouponPolicyService couponPolicyService;

public CouponPolicyController(CouponPolicyService couponPolicyService) {
this.couponPolicyService = couponPolicyService;
}



/**
* 웰컴쿠폰 정책을 생성하는 컨트롤러
* @param couponPolicyRequestDTO 쿠폰정책 생성 dto
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,12 @@
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.dto.response.CouponPolicyResponseDTO;
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.entity.CouponPolicy;




/**
* @author 이기훈
* 쿠폰정책 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
*/
public interface CustomCouponPolicyRepository {


/**
* 쿠폰 정책 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository method
* @param pageable 페이지정보
Expand All @@ -29,8 +25,7 @@ public interface CustomCouponPolicyRepository {
* @return 쿠폰정책 응답 dto
*/
Page<CouponPolicyResponseDTO> findAllWithBooksAndCategories(Pageable pageable, Map<Long, BookCoupon.BookInfo> bookIdMap, Map<Long, CategoryCoupon.CategoryInfo> categoryIdMap);



/**
* 해당 쿠폰타입에서 가장 최신의 정책을 불러오는 method
* @param type 쿠폰정책 타입
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
Expand All @@ -24,8 +23,12 @@ public CustomCouponPolicyRepositoryImpl(JPAQueryFactory queryFactory) {
this.queryFactory = queryFactory;
}

/**
*{@inheritDoc}
*/
@Override
public Page<CouponPolicyResponseDTO> findAllWithBooksAndCategories(Pageable pageable, Map<Long, BookCoupon.BookInfo> bookIdMap,
public Page<CouponPolicyResponseDTO> findAllWithBooksAndCategories(Pageable pageable,
Map<Long, BookCoupon.BookInfo> bookIdMap,
Map<Long, CategoryCoupon.CategoryInfo> categoryIdMap) {
QCouponPolicy couponPolicy = QCouponPolicy.couponPolicy;

Expand All @@ -47,10 +50,12 @@ public Page<CouponPolicyResponseDTO> findAllWithBooksAndCategories(Pageable page
.isUsed(policy.getIsUsed())
.bookId(bookIdMap.get(policy.getId()) != null ? bookIdMap.get(policy.getId()).bookId : null)
.bookTitle(bookIdMap.get(policy.getId()) != null ? bookIdMap.get(policy.getId()).bookTitle : null)
.categoryId(categoryIdMap.get(policy.getId()) != null ? categoryIdMap.get(policy.getId()).categoryId : null)
.categoryName(categoryIdMap.get(policy.getId()) != null ? categoryIdMap.get(policy.getId()).categoryName : null)
.categoryId(
categoryIdMap.get(policy.getId()) != null ? categoryIdMap.get(policy.getId()).categoryId : null)
.categoryName(
categoryIdMap.get(policy.getId()) != null ? categoryIdMap.get(policy.getId()).categoryName : null)
.build()
).collect(Collectors.toList());
).toList();

// Count total number of coupon policies
long totalCount = Optional.ofNullable(queryFactory
Expand All @@ -62,6 +67,9 @@ public Page<CouponPolicyResponseDTO> findAllWithBooksAndCategories(Pageable page
return new PageImpl<>(couponPolicies, pageable, totalCount);
}

/**
*{@inheritDoc}
*/
@Override
public Optional<CouponPolicy> findLatestCouponPolicyByType(String type) {
QCouponPolicy couponPolicy = QCouponPolicy.couponPolicy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.dto.request.CouponPolicyUpdateRequestDTO;
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.dto.response.CouponPolicyResponseDTO;


/**
* 쿠폰 정책을 관리하는 서비스 레이어를 나타내는 인터페이스입니다.
*
* @author 이기훈
* 쿠폰 정책을 관리하는 서비스 레이어를 나타내는 인터페이스입니다.
*/
public interface CouponPolicyService {
/**
Expand Down
Loading

0 comments on commit 5beb8da

Please sign in to comment.