fix(kc): Leave all club groupe when setClubGroupMembre is call whit null ClubModel

This commit is contained in:
Thibaut Valentin 2025-01-21 10:55:56 +01:00
parent 81f256109a
commit a489ddedc3

View File

@ -86,17 +86,26 @@ public class KeycloakService {
} }
public Uni<String> setClubGroupMembre(MembreModel membreModel, ClubModel club) { public Uni<String> setClubGroupMembre(MembreModel membreModel, ClubModel club) {
return getGroupFromClub(club).chain( if (club == null)
clubId -> getUserFromMember(membreModel).chain( return getUserFromMember(membreModel).chain(
userId -> vertx.getOrCreateContext().executeBlocking(() -> { userId -> vertx.getOrCreateContext().executeBlocking(() -> {
UserResource user = keycloak.realm(realm).users().get(userId); UserResource user = keycloak.realm(realm).users().get(userId);
user.groups().stream().filter(g -> g.getPath().startsWith("/club")) user.groups().stream().filter(g -> g.getPath().startsWith("/club"))
.forEach(g -> user.leaveGroup(g.getId())); .forEach(g -> user.leaveGroup(g.getId()));
user.joinGroup(clubId); return "OK";
LOGGER.infof("Set club \"%s\" to user %s (%s)", club.getName(), userId, }));
user.toRepresentation().getUsername()); else
return "OK"; 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) { public Uni<?> setEmail(String userId, String email) {