From 81f256109abdc71115f5f27d9e85183e68603e50 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Mon, 20 Jan 2025 20:46:20 +0100 Subject: [PATCH 1/3] fix(club): null affiliation id on club list page --- src/main/webapp/src/pages/admin/club/ClubList.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/src/pages/admin/club/ClubList.jsx b/src/main/webapp/src/pages/admin/club/ClubList.jsx index 1b7c59e..85941c8 100644 --- a/src/main/webapp/src/pages/admin/club/ClubList.jsx +++ b/src/main/webapp/src/pages/admin/club/ClubList.jsx @@ -141,7 +141,7 @@ function MakeCentralPanel({data, visibleclub, navigate, showAffiliationState, pa function MakeRow({club, showAffiliationState, navigate}) { const rowContent = <>
- {String(club.no_affiliation).padStart(5, '0')} + {club.no_affiliation ? String(club.no_affiliation).padStart(5, '0') : "-------"}
{club.name}
-- 2.49.0 From a489ddedc3e52366726309f7ff7c8a133566e763 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Tue, 21 Jan 2025 10:55:56 +0100 Subject: [PATCH 2/3] fix(kc): Leave all club groupe when setClubGroupMembre is call whit null ClubModel --- .../ffsaf/domain/service/KeycloakService.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java index a87c2e5..f5966b9 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java @@ -86,17 +86,26 @@ public class KeycloakService { } public Uni setClubGroupMembre(MembreModel membreModel, ClubModel club) { - return getGroupFromClub(club).chain( - clubId -> getUserFromMember(membreModel).chain( - userId -> vertx.getOrCreateContext().executeBlocking(() -> { - UserResource user = keycloak.realm(realm).users().get(userId); - user.groups().stream().filter(g -> g.getPath().startsWith("/club")) - .forEach(g -> user.leaveGroup(g.getId())); - user.joinGroup(clubId); - LOGGER.infof("Set club \"%s\" to user %s (%s)", club.getName(), userId, - user.toRepresentation().getUsername()); - return "OK"; - }))); + if (club == null) + return getUserFromMember(membreModel).chain( + userId -> vertx.getOrCreateContext().executeBlocking(() -> { + UserResource user = keycloak.realm(realm).users().get(userId); + user.groups().stream().filter(g -> g.getPath().startsWith("/club")) + .forEach(g -> user.leaveGroup(g.getId())); + return "OK"; + })); + else + return getGroupFromClub(club).chain( + clubId -> getUserFromMember(membreModel).chain( + userId -> vertx.getOrCreateContext().executeBlocking(() -> { + UserResource user = keycloak.realm(realm).users().get(userId); + user.groups().stream().filter(g -> g.getPath().startsWith("/club")) + .forEach(g -> user.leaveGroup(g.getId())); + user.joinGroup(clubId); + LOGGER.infof("Set club \"%s\" to user %s (%s)", club.getName(), userId, + user.toRepresentation().getUsername()); + return "OK"; + }))); } public Uni setEmail(String userId, String email) { -- 2.49.0 From c20ea7cedcae844f11de985c015a7d9197e4870b Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Tue, 21 Jan 2025 11:01:54 +0100 Subject: [PATCH 3/3] feat(account): add email.enabled setting --- .../ffsaf/domain/service/KeycloakService.java | 12 +++++++++--- src/main/resources/application.properties | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java index f5966b9..4555fc6 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/KeycloakService.java @@ -42,6 +42,9 @@ public class KeycloakService { @ConfigProperty(name = "keycloak.realm") String realm; + @ConfigProperty(name = "email.enabled") + boolean enabled_email; + @Inject Vertx vertx; @@ -215,9 +218,12 @@ public class KeycloakService { return getUser(login).orElseThrow( () -> new KeycloakException("Fail to fetch user %s".formatted(finalLogin))); }) - //.invoke(user -> keycloak.realm(realm).users().get(user.getId()) // TODO enable for production - // .executeActionsEmail(List.of(RequiredAction.VERIFY_EMAIL.name(), - // RequiredAction.UPDATE_PASSWORD.name()))) + .invoke(user -> { + if (enabled_email) + keycloak.realm(realm).users().get(user.getId()) + .executeActionsEmail(List.of(RequiredAction.VERIFY_EMAIL.name(), + RequiredAction.UPDATE_PASSWORD.name())); + }) .invoke(user -> membreModel.setUserId(user.getId())) .call(user -> membreService.setUserId(membreModel.getId(), user.getId())) .call(user -> setClubGroupMembre(membreModel, membreModel.getClub())); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 90c91bd..ee898d3 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -26,6 +26,8 @@ quarkus.oidc.roles.source=accesstoken quarkus.http.limits.max-body-size=10M +email.enabled=false + database.prefix = test2_ database.database=ffsaf database.hostname=localhost -- 2.49.0