Skip to content

Commit 3cbc700

Browse files
Merge pull request #223 from mju-likelion/feature/date-booth-restriction-in-interceptor-#222
Feature/#222 날짜, 시간 제한 Filter 를 Interceptor 에서 동작하도록 변경
2 parents f80bcc5 + db1f372 commit 3cbc700

33 files changed

+198
-286
lines changed

src/main/java/org/mju_likelion/festival/announcement/controller/AnnouncementController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
import org.mju_likelion.festival.announcement.dto.response.SimpleAnnouncementsResponse;
1616
import org.mju_likelion.festival.announcement.service.AnnouncementQueryService;
1717
import org.mju_likelion.festival.announcement.service.AnnouncementService;
18-
import org.mju_likelion.festival.common.annotaion.page_number.PageNumber;
19-
import org.mju_likelion.festival.common.annotaion.page_size.PageSize;
2018
import org.mju_likelion.festival.common.authentication.AuthenticationPrincipal;
21-
import org.mju_likelion.festival.common.enums.SortOrder;
19+
import org.mju_likelion.festival.common.util.annotaion.page_number.PageNumber;
20+
import org.mju_likelion.festival.common.util.annotaion.page_size.PageSize;
21+
import org.mju_likelion.festival.common.util.enums.SortOrder;
2222
import org.springframework.http.ResponseEntity;
2323
import org.springframework.web.bind.annotation.DeleteMapping;
2424
import org.springframework.web.bind.annotation.GetMapping;

src/main/java/org/mju_likelion/festival/announcement/domain/repository/AnnouncementQueryRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import lombok.RequiredArgsConstructor;
1010
import org.mju_likelion.festival.announcement.domain.AnnouncementDetail;
1111
import org.mju_likelion.festival.announcement.domain.SimpleAnnouncement;
12-
import org.mju_likelion.festival.common.enums.SortOrder;
12+
import org.mju_likelion.festival.common.util.enums.SortOrder;
1313
import org.springframework.dao.support.DataAccessUtils;
1414
import org.springframework.jdbc.core.RowMapper;
1515
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;

src/main/java/org/mju_likelion/festival/announcement/service/AnnouncementQueryService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import org.mju_likelion.festival.announcement.domain.repository.AnnouncementQueryRepository;
1313
import org.mju_likelion.festival.announcement.dto.response.AnnouncementDetailResponse;
1414
import org.mju_likelion.festival.announcement.dto.response.SimpleAnnouncementsResponse;
15-
import org.mju_likelion.festival.common.enums.SortOrder;
1615
import org.mju_likelion.festival.common.exception.NotFoundException;
16+
import org.mju_likelion.festival.common.util.enums.SortOrder;
1717
import org.springframework.stereotype.Service;
1818
import org.springframework.transaction.annotation.Transactional;
1919

src/main/java/org/mju_likelion/festival/booth/service/BoothQueryService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
import org.mju_likelion.festival.booth.dto.response.SimpleBoothResponse;
2828
import org.mju_likelion.festival.booth.dto.response.SimpleBoothResponses;
2929
import org.mju_likelion.festival.booth.util.qr.manager.BoothQrManager;
30-
import org.mju_likelion.festival.common.circuit_breaker.FallBackUtil;
3130
import org.mju_likelion.festival.common.exception.BadRequestException;
3231
import org.mju_likelion.festival.common.exception.ForbiddenException;
3332
import org.mju_likelion.festival.common.exception.NotFoundException;
33+
import org.mju_likelion.festival.common.util.circuit_breaker.FallBackUtil;
3434
import org.springframework.cache.annotation.Cacheable;
3535
import org.springframework.stereotype.Service;
3636
import org.springframework.transaction.annotation.Transactional;

src/main/java/org/mju_likelion/festival/booth/service/BoothService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import org.mju_likelion.festival.booth.dto.request.UpdateBoothRequest;
1313
import org.mju_likelion.festival.booth.util.qr.BoothQrStrategy;
1414
import org.mju_likelion.festival.booth.util.qr.manager.BoothQrManager;
15-
import org.mju_likelion.festival.common.circuit_breaker.FallBackUtil;
15+
import org.mju_likelion.festival.common.util.circuit_breaker.FallBackUtil;
1616
import org.mju_likelion.festival.user.domain.User;
1717
import org.mju_likelion.festival.user.service.UserQueryService;
1818
import org.springframework.cache.annotation.CacheEvict;

src/main/java/org/mju_likelion/festival/common/authentication/interceptor/AbstractAuthenticationInterceptor.java

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
import static org.mju_likelion.festival.common.exception.type.ErrorType.JWT_NOT_FOUND_ERROR;
44

55
import jakarta.servlet.http.HttpServletRequest;
6-
import jakarta.servlet.http.HttpServletResponse;
76
import java.util.ArrayList;
87
import java.util.List;
9-
import java.util.Objects;
108
import org.mju_likelion.festival.auth.util.jwt.JwtUtil;
119
import org.mju_likelion.festival.auth.util.jwt.Payload;
1210
import org.mju_likelion.festival.common.authentication.AuthenticationContext;
1311
import org.mju_likelion.festival.common.authentication.AuthorizationExtractor;
1412
import org.mju_likelion.festival.common.exception.ForbiddenException;
1513
import org.mju_likelion.festival.common.exception.UnauthorizedException;
1614
import org.mju_likelion.festival.common.exception.type.ErrorType;
15+
import org.mju_likelion.festival.common.interceptor.RestInterceptor;
16+
import org.mju_likelion.festival.common.util.request_matcher.AllowedRequestMatcherProvider;
1717
import org.mju_likelion.festival.common.util.request_matcher.RequestMatcher;
18-
import org.springframework.web.servlet.HandlerInterceptor;
1918

20-
public abstract class AbstractAuthenticationInterceptor implements HandlerInterceptor {
19+
public abstract class AbstractAuthenticationInterceptor extends RestInterceptor implements
20+
AllowedRequestMatcherProvider {
2121

2222
private final AuthenticationContext authenticationContext;
2323
private final JwtUtil userJwtUtil;
@@ -29,15 +29,7 @@ protected AbstractAuthenticationInterceptor(final AuthenticationContext authenti
2929
}
3030

3131
@Override
32-
public boolean preHandle(
33-
final HttpServletRequest request,
34-
final HttpServletResponse response,
35-
final Object handler) {
36-
37-
if (isPassableRequest(request)) {
38-
return true;
39-
}
40-
32+
protected boolean doInternal(final HttpServletRequest request) {
4133
String accessToken = AuthorizationExtractor.extract(request)
4234
.orElseThrow(() -> new UnauthorizedException(JWT_NOT_FOUND_ERROR));
4335
Payload payload = userJwtUtil.getPayload(accessToken);
@@ -52,31 +44,14 @@ public boolean preHandle(
5244
return true;
5345
}
5446

55-
private boolean isPassableRequest(final HttpServletRequest request) {
56-
return isOptionsRequest(request) || isRequestPermitted(request);
57-
}
58-
59-
private boolean isOptionsRequest(final HttpServletRequest request) {
60-
return Objects.equals(request.getMethod(), "OPTIONS");
61-
}
62-
63-
/**
64-
* HTTP 메서드에 따른 요청 허용 여부를 판단한다.
65-
*
66-
* @param request 요청
67-
* @return 허용 여부
68-
*/
69-
private boolean isRequestPermitted(final HttpServletRequest request) {
47+
@Override
48+
protected boolean isPermittedApi(final HttpServletRequest request) {
7049
return getAllowedRequestMatchers().stream()
7150
.anyMatch(matcher -> matcher.matches(request));
7251
}
7352

74-
/**
75-
* 허용 요청 매처 목록을 반환한다. 오버라이딩하지 않는다면 빈 목록을 반환한다.
76-
*
77-
* @return 요청 매처 목록
78-
*/
79-
protected List<RequestMatcher> getAllowedRequestMatchers() {
53+
@Override
54+
public List<RequestMatcher> getAllowedRequestMatchers() {
8055
return new ArrayList<>();
8156
}
8257

src/main/java/org/mju_likelion/festival/common/authentication/interceptor/BoothAdminAuthenticationInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public BoothAdminAuthenticationInterceptor(
2626
}
2727

2828
@Override
29-
protected List<RequestMatcher> getAllowedRequestMatchers() {
29+
public List<RequestMatcher> getAllowedRequestMatchers() {
3030
List<RequestMatcher> allowedRequestMatchers = new LinkedList<>();
3131
allowedRequestMatchers.add(new RequestMatcher(HttpMethod.GET, GET_BOOTH));
3232

src/main/java/org/mju_likelion/festival/common/authentication/interceptor/StudentCouncilAuthenticationInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public StudentCouncilAuthenticationInterceptor(
2929
}
3030

3131
@Override
32-
protected List<RequestMatcher> getAllowedRequestMatchers() {
32+
public List<RequestMatcher> getAllowedRequestMatchers() {
3333
List<RequestMatcher> allowedRequestMatchers = new LinkedList<>();
3434
allowedRequestMatchers.add(new RequestMatcher(HttpMethod.GET, GET_ALL_ANNOUNCEMENTS));
3535
allowedRequestMatchers.add(new RequestMatcher(HttpMethod.GET, GET_ANNOUNCEMENT));

src/main/java/org/mju_likelion/festival/common/config/FilterConfig.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/main/java/org/mju_likelion/festival/common/config/WebConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import lombok.RequiredArgsConstructor;
55
import org.mju_likelion.festival.common.authentication.config.AuthenticationConfig;
66
import org.mju_likelion.festival.common.logging.config.LoggingConfig;
7+
import org.mju_likelion.festival.common.restriction.date_restriction.DateRestrictionInterceptor;
8+
import org.mju_likelion.festival.common.restriction.time_restriction.BoothOperationTimeRestrictionInterceptor;
79
import org.springframework.beans.factory.annotation.Value;
810
import org.springframework.context.annotation.Bean;
911
import org.springframework.context.annotation.Configuration;
@@ -20,6 +22,8 @@ public class WebConfig implements WebMvcConfigurer {
2022
private static final String ALLOWED_METHOD_NAMES = "GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,PATCH";
2123
private final AuthenticationConfig authenticationConfig;
2224
private final LoggingConfig loggingConfig;
25+
private final DateRestrictionInterceptor dateRestrictionInterceptor;
26+
private final BoothOperationTimeRestrictionInterceptor boothOperationTimeRestrictionInterceptor;
2327
@Value("${client.hosts}")
2428
private List<String> clientHosts;
2529

@@ -41,6 +45,8 @@ public RestTemplate restTemplate() {
4145
@Override
4246
public void addInterceptors(final InterceptorRegistry registry) {
4347
loggingConfig.addInterceptors(registry);
48+
registry.addInterceptor(dateRestrictionInterceptor);
49+
registry.addInterceptor(boothOperationTimeRestrictionInterceptor);
4450
authenticationConfig.addInterceptors(registry);
4551
}
4652

src/main/java/org/mju_likelion/festival/common/filter/ErrorResponseHandler.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/main/java/org/mju_likelion/festival/common/filter/RestFilter.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/main/java/org/mju_likelion/festival/common/filter/date_restriction/DateRestrictionFilter.java

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)