pain and suffering

This commit is contained in:
Stepan Usatiuk
2023-12-30 20:43:21 +01:00
parent d7cd581bff
commit 65e50d9e02
5 changed files with 149 additions and 87 deletions

View File

@@ -0,0 +1,50 @@
package com.usatiuk.tjv.y.server;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.CacheControl;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.ResourceResolver;
import org.springframework.web.servlet.resource.ResourceResolverChain;
import java.time.Duration;
import java.util.List;
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
static class AppResourceResolver implements ResourceResolver {
@Override
public Resource resolveResource(HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) {
ClassPathResource res = new ClassPathResource("/app/" + requestPath);
if (res.exists()) return res;
ClassPathResource indexRes = new ClassPathResource("/app/index.html");
if (indexRes.exists()) return indexRes;
return null;
}
@Override
public String resolveUrlPath(String resourcePath, List<? extends Resource> locations, ResourceResolverChain chain) {
return null;
}
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/app/", "/app/index.html");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/app/**")
.setCacheControl(CacheControl.maxAge(Duration.ofDays(365)))
.resourceChain(true)
.addResolver(new AppResourceResolver());
}
}

View File

@@ -59,6 +59,7 @@ public class WebSecurityConfig {
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers(mvc.pattern(HttpMethod.POST, "/person")).permitAll()
.requestMatchers(mvc.pattern(HttpMethod.POST, "/token")).permitAll()
.requestMatchers(mvc.pattern("/app/**")).permitAll()
.requestMatchers(mvc.pattern("/swagger-ui*/**")).permitAll()
.requestMatchers(mvc.pattern("/v3/**")).permitAll()
.requestMatchers(mvc.pattern("/error")).permitAll()