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

@@ -8,6 +8,7 @@
"start": "parcel",
"build": "parcel build"
},
"publicUrl": "/app",
"browserslist": "> 0.5%, last 2 versions, not dead",
"dependencies": {
"jwt-decode": "^4.0.0",

View File

@@ -39,7 +39,8 @@ import { Chat } from "./Chat";
import { ChatEdit } from "./ChatEdit";
import { Haters } from "./Haters";
const router = createBrowserRouter([
const router = createBrowserRouter(
[
{
path: "/",
loader: async () => {
@@ -127,7 +128,9 @@ const router = createBrowserRouter([
},
action: signupAction,
},
]);
],
{ basename: "/app" },
);
export function App() {
return (

View File

@@ -3,7 +3,14 @@
import { jwtDecode } from "jwt-decode";
import { isError } from "./dto";
const apiRoot: string = "http://localhost:8080";
declare const process: {
env: {
NODE_ENV: string;
};
};
const apiRoot: string =
process.env.NODE_ENV == "production" ? "/" : "http://localhost:8080";
let token: string | null;

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()