package com.eactive.httpmockserver.config; import com.eactive.httpmockserver.common.interceptor.AuthenticInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.data.domain.PageRequest; import org.springframework.data.web.PageableHandlerMethodArgumentResolver; import org.springframework.http.CacheControl; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.resource.PathResourceResolver; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @Configuration @EnableWebMvc public class WebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.setOrder(Ordered.HIGHEST_PRECEDENCE); WebMvcConfigurer.super.addViewControllers(registry); } private List listAdminAuthPattern() { List patterns = new ArrayList<>(); patterns.add("/mgmt/users/*.do"); patterns.add("/mgmt/servers/*.do"); return patterns; } @Bean public AuthenticInterceptor authenticInterceptor() { AuthenticInterceptor authenticInterceptor = new AuthenticInterceptor(); authenticInterceptor.setAdminAuthPatternList(listAdminAuthPattern()); return authenticInterceptor; } @Override public void addArgumentResolvers(List resolvers) { resolvers.add(pageableHandlerMethodArgumentResolver()); } @Bean public PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver() { PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver = new PageableHandlerMethodArgumentResolver(); pageableHandlerMethodArgumentResolver.setOneIndexedParameters(true); //1부터 시작 pageableHandlerMethodArgumentResolver.setFallbackPageable(PageRequest.of(0, 10)); //파라미터 없을 때 기본 페이지 return pageableHandlerMethodArgumentResolver; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authenticInterceptor()) .addPathPatterns( "/", "/mgmt/**/*.do") .excludePathPatterns( "/h2-console/**", "/css/**", "/html/**", "/images/**", "/img/**", "/js/**", "/login", "/intro.do", "/join.do", "/user_register.do", "/actionLogin.do", "/check_id.do", "/search_id.do", "/admin_register_view.do", "/admin_register.do", "/request_register_auth.do", "/reset_password.do", "/forgot_password.do" ); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/css/**").addResourceLocations("/css/", "classpath:/static/css/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/fonts/**").addResourceLocations("/fonts/", "classpath:/static/fonts/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/font/**").addResourceLocations("/font/", "classpath:/static/fonts/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/html/**").addResourceLocations("/html/", "classpath:/static/html/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/images/**").addResourceLocations("/images/", "classpath:/static/images/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/img/**").addResourceLocations("/img/", "classpath:/static/img/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/js/**").addResourceLocations("/js/", "classpath:/static/js/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/", "classpath:/static/plugins/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/min-maps/**").addResourceLocations("/min-maps/", "classpath:/static/plugins/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); registry.addResourceHandler("/favicon.ico").addResourceLocations("/favicon.ico", "classpath:/static/favicon.ico").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); } }