From 4b430e241f9f564057defba1726bc438b99ffce9 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Thu, 6 Feb 2025 11:43:49 +0100 Subject: [PATCH 1/5] fix(build): docker build --- src/main/docker/Dockerfile.native | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/docker/Dockerfile.native b/src/main/docker/Dockerfile.native index aae442e..3ff0a8c 100644 --- a/src/main/docker/Dockerfile.native +++ b/src/main/docker/Dockerfile.native @@ -17,6 +17,7 @@ # replace FROM registry.access.redhat.com/ubi8/ubi-minimal:8.9 for jvm need sub application (ie. make_pdf) FROM registry.access.redhat.com/ubi8/openjdk-17:1.18 +USER 0 WORKDIR /work/ RUN chown 1001 /work \ && chmod "g+rwX" /work \ -- 2.49.0 From b983f4e3ec1f4ed4d29523cde92dc6b0800e4f2d Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Thu, 6 Feb 2025 13:43:38 +0100 Subject: [PATCH 2/5] fix(pdf): no photo --- src/main/pdf_gen/src/main/java/fr/titionfire/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/pdf_gen/src/main/java/fr/titionfire/Main.java b/src/main/pdf_gen/src/main/java/fr/titionfire/Main.java index e6ba272..77d0be7 100644 --- a/src/main/pdf_gen/src/main/java/fr/titionfire/Main.java +++ b/src/main/pdf_gen/src/main/java/fr/titionfire/Main.java @@ -135,7 +135,7 @@ public class Main { // Adding member photo Image memberPhoto; - if (pdfData.photo_file != null && pdfData.photo_file.exists()) { + if (pdfData.photo_file != null && pdfData.photo_file.exists() && pdfData.photo_file.getAbsolutePath().equals("/dev/null")) { memberPhoto = Image.getInstance(Files.readAllBytes(pdfData.photo_file.toPath())); } else { memberPhoto = Image.getInstance( -- 2.49.0 From 4e9686d6a78922eaa376d9d261733a5cc1419936 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Thu, 6 Feb 2025 13:57:31 +0100 Subject: [PATCH 3/5] fix(search): add case insensitive --- .../fr/titionfire/ffsaf/domain/service/ClubService.java | 4 ++-- .../fr/titionfire/ffsaf/domain/service/MembreService.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java index 82810c8..4a1c8fe 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java @@ -91,10 +91,10 @@ public class ClubService { PanacheQuery query; if (country == null || country.isBlank()) - query = repository.find("name LIKE ?1", + query = repository.find("LOWER(name) LIKE LOWER(?1)", Sort.ascending("name"), search).page(Page.ofSize(limit)); else - query = repository.find("name LIKE ?1 AND country LIKE ?2", + query = repository.find("LOWER(name) LIKE LOWER(?1) AND country LIKE ?2", Sort.ascending("name"), search, country + "%").page(Page.ofSize(limit)); return getPageResult(query, limit, page); } diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java index 7d8e1a9..6e4da9d 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java @@ -68,7 +68,7 @@ public class MembreService { public SimpleCombModel find(int licence, String np) throws Throwable { return VertxContextSupport.subscribeAndAwait(() -> Panache.withTransaction(() -> - repository.find("licence = ?1 AND (lname ILIKE ?2 OR fname ILIKE ?2)", + repository.find("licence = ?1 AND (LOWER(lname) LIKE LOWER(?2) OR LOWER(fname) LIKE LOWER(?2))", licence, np).firstResult().map(SimpleCombModel::fromModel))); } @@ -85,10 +85,10 @@ public class MembreService { PanacheQuery query; if (club == null || club.isBlank()) - query = repository.find("(lname LIKE ?1 OR fname LIKE ?1)", + query = repository.find("(LOWER(lname) LIKE LOWER(?1) OR LOWER(fname) LIKE LOWER(?1))", Sort.ascending("fname", "lname"), search).page(Page.ofSize(limit)); else - query = repository.find("club.name LIKE ?2 AND (lname LIKE ?1 OR fname LIKE ?1)", + query = repository.find("LOWER(club.name) LIKE LOWER(?2) AND (LOWER(lname) LIKE LOWER(?1) OR LOWER(fname) LIKE LOWER(?1))", Sort.ascending("fname", "lname"), search, club + "%").page(Page.ofSize(limit)); return getPageResult(query, limit, page); } @@ -100,7 +100,7 @@ public class MembreService { String finalSearch = search; return repository.find("userId = ?1", subject).firstResult() .chain(membreModel -> { - PanacheQuery query = repository.find("club = ?1 AND (lname LIKE ?2 OR fname LIKE ?2)", + PanacheQuery query = repository.find("club = ?1 AND (LOWER(lname) LIKE LOWER(?2) OR LOWER(fname) LIKE LOWER(?2))", Sort.ascending("fname", "lname"), membreModel.getClub(), finalSearch) .page(Page.ofSize(limit)); return getPageResult(query, limit, page); -- 2.49.0 From 1b39c438bfb542c50e5fe2f27f3b13e38dac5a29 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Thu, 6 Feb 2025 14:28:39 +0100 Subject: [PATCH 4/5] fix(error): update error mapper --- .../rest/exception/DetailExceptionMapper.java | 16 +++++++++------- .../src/pages/admin/member/InformationForm.jsx | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/rest/exception/DetailExceptionMapper.java b/src/main/java/fr/titionfire/ffsaf/rest/exception/DetailExceptionMapper.java index c37f711..57a4567 100644 --- a/src/main/java/fr/titionfire/ffsaf/rest/exception/DetailExceptionMapper.java +++ b/src/main/java/fr/titionfire/ffsaf/rest/exception/DetailExceptionMapper.java @@ -2,18 +2,20 @@ package fr.titionfire.ffsaf.rest.exception; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import jakarta.ws.rs.ext.ExceptionMapper; -import jakarta.ws.rs.ext.Provider; +import org.jboss.resteasy.reactive.server.ServerExceptionMapper; +import org.jboss.resteasy.reactive.server.UnwrapException; -@Provider -public class DetailExceptionMapper implements ExceptionMapper { +import java.util.concurrent.CompletionException; - @Override - public Response toResponse(DetailException e) { +@UnwrapException({CompletionException.class, RuntimeException.class}) +public class DetailExceptionMapper{ + + @ServerExceptionMapper + public Response mapException(DetailException e) { + System.out.println("DetailExceptionMapper: " + e.getMessage()); return Response.status(e.getStatus()) .entity(e.getMessage()) .type(MediaType.TEXT_PLAIN_TYPE) .build(); } - } diff --git a/src/main/webapp/src/pages/admin/member/InformationForm.jsx b/src/main/webapp/src/pages/admin/member/InformationForm.jsx index e8fcacb..24e812d 100644 --- a/src/main/webapp/src/pages/admin/member/InformationForm.jsx +++ b/src/main/webapp/src/pages/admin/member/InformationForm.jsx @@ -1,5 +1,5 @@ import {useLoadingSwitcher} from "../../../hooks/useLoading.jsx"; -import {apiAxios} from "../../../utils/Tools.js"; +import {apiAxios, errFormater} from "../../../utils/Tools.js"; import {toast} from "react-toastify"; import imageCompression from "browser-image-compression"; import {BirthDayField, CountryList, OptionField, RoleList, TextField} from "../../../components/MemberCustomFiels.jsx"; @@ -70,7 +70,7 @@ export function InformationForm({data}) { toast.success('Profile mis à jours avec succès 🎉'); }).catch(e => { console.log(e.response) - toast.error('Échec de la mise à jours du profile 😕 (code: ' + e.response.status + ')'); + toast.error(errFormater(e,'Échec de la mise à jours du profile 😕')); }).finally(() => { if (setLoading) setLoading(0) -- 2.49.0 From d613439a827ca43f97859a8fb92270180baf54cc Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Thu, 6 Feb 2025 14:29:55 +0100 Subject: [PATCH 5/5] fix(licence): admin role null contexte --- .../java/fr/titionfire/ffsaf/domain/service/LicenceService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/LicenceService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/LicenceService.java index ac99ae2..848aafe 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/LicenceService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/LicenceService.java @@ -40,7 +40,7 @@ public class LicenceService { } public Uni> getCurrentSaisonLicence(SecurityCtx securityCtx) { - if (securityCtx.getSubject() == null) + if (securityCtx == null || securityCtx.getSubject() == null) return repository.find("saison = ?1", Utils.getSaison()).list(); return combRepository.find("userId = ?1", securityCtx.getSubject()).firstResult().map(MembreModel::getClub) -- 2.49.0