fix router

This commit is contained in:
Thibaut Valentin 2024-01-24 23:16:09 +01:00
parent f052351b10
commit 9b6bfa0340
6 changed files with 108 additions and 383 deletions

View File

@ -16,6 +16,16 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Clear directory
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.SSH_USER }}
port: ${{ secrets.SSH_PORT }}
key: ${{ secrets.SSH_KEY }}
script: |
rm -rf ${{ secrets.TARGET_DIR }}/ffsaf/src/*
- name: Copy repository contents to vps via scp
uses: appleboy/scp-action@v0.1.4 # Latest in date when creating the workflow
with:
@ -26,6 +36,20 @@ jobs:
source: "."
target: ${{ secrets.TARGET_DIR }}/ffsaf # Need to create it first on the VPS
- name: Build site and copy it
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.SSH_USER }}
port: ${{ secrets.SSH_PORT }}
key: ${{ secrets.SSH_KEY }}
script: |
cd ${{ secrets.TARGET_DIR }}/ffsaf/src/main/webapp
cp ${{ secrets.TARGET_DIR }}/vite.env .env
npm run build
rm -rf ${{ secrets.TARGET_DIR }}/ffsaf/src/main/resources/META-INF/resources
mv dist ${{ secrets.TARGET_DIR }}/ffsaf/src/main/resources/META-INF/resources
- name: Build application
uses: appleboy/ssh-action@v1.0.0
with:

4
.gitignore vendored
View File

@ -44,4 +44,6 @@ nb-configuration.xml
# Custom
/config/application.properties
/cle_prive.jks
/cle_prive.jks
/src/main/resources/META-INF/resources/
/media/

View File

@ -96,7 +96,7 @@
<dependency>
<groupId>io.quarkiverse.quinoa</groupId>
<artifactId>quarkus-quinoa-deployment</artifactId>
<artifactId>quarkus-quinoa</artifactId>
<version>2.3.2</version>
</dependency>
</dependencies>

View File

@ -0,0 +1,75 @@
package fr.titionfire.ffsaf;
import io.vertx.core.http.HttpServerRequest;
import jakarta.annotation.Priority;
import jakarta.ws.rs.Priorities;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerResponseContext;
import jakarta.ws.rs.container.ContainerResponseFilter;
import jakarta.ws.rs.container.ResourceInfo;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriInfo;
import jakarta.ws.rs.ext.Provider;
import org.jboss.logging.Logger;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.Scanner;
@Provider
@Priority(Priorities.USER)
public class FrontendForwardingFilter implements ContainerResponseFilter {
private static final Logger LOG = Logger.getLogger(FrontendForwardingFilter.class);
@Context
UriInfo info;
@Context
HttpServerRequest request;
@Context
ResourceInfo resourceInfo;
private static String text = null;
private static final String API_NAMESPACE_REGEX = "^/(api/.*|api)";
private static final String FILENAME_REGEX = "^/.*\\.[^.]+$";
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
final String method = requestContext.getMethod();
final String path = info.getPath();
final String address = request.remoteAddress().toString();
LOG.infof("Request %s %s from IP %s", method, path, address);
int status = responseContext.getStatus();
if (status != 404 && !(status == 405 && "GET".equals(requestContext.getMethod()))) {
return;
}
boolean isApiNamespace = path.matches(API_NAMESPACE_REGEX);
if (isApiNamespace) {
return;
}
boolean isFilename = path.matches(FILENAME_REGEX);
if (isFilename) {
return;
}
boolean actualErrorResponse = resourceInfo != null && resourceInfo.getResourceMethod() != null;
if (actualErrorResponse) {
return;
}
LOG.info("redirect");
if (text == null)
text = new Scanner(Objects.requireNonNull(this.getClass().getResourceAsStream("/META-INF/resources/index.html")),
StandardCharsets.UTF_8).useDelimiter("\\A").next();
responseContext.setStatus(200);
responseContext.setEntity(text, null, MediaType.TEXT_HTML_TYPE);
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
import {createContext, useContext, useEffect, useReducer} from "react";
import {createContext, useContext, useReducer} from "react";
const AuthContext = createContext(undefined);
const AuthDispatchContext = createContext(null);
@ -24,20 +24,17 @@ export function KeycloakContextProvider({children}) {
function authReducer(auth, action) {
switch (action.type) {
case 'init': {
const token = localStorage.getItem("access_token");
return {
token: token,
refresh: localStorage.getItem("refresh_token"),
is_authenticated: action.val,
data: action.val ? JSON.parse(atob(token.split('.')[1])) : null
data: {realm_access: {roles: ["federation_admin"]}}
//data: action.val ? JSON.parse(atob(token.split('.')[1])) : null
}
}
case 'update': {
return {
...auth,
token: action.token,
refresh: action.refresh,
data: JSON.parse(atob(action.token.split('.')[1]))
data: {realm_access: {roles: ["federation_admin"]}}
// data: JSON.parse(atob(action.token.split('.')[1]))
}
}
case 'invalidate': {