From a489ddedc3e52366726309f7ff7c8a133566e763 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Tue, 21 Jan 2025 10:55:56 +0100 Subject: [PATCH] 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) {