add Keycloak action, auto assigne club on création
This commit is contained in:
parent
978c055834
commit
251d0e25d6
@ -3,6 +3,7 @@ package fr.titionfire.ffsaf.domain.service;
|
|||||||
import fr.titionfire.ffsaf.data.model.ClubModel;
|
import fr.titionfire.ffsaf.data.model.ClubModel;
|
||||||
import fr.titionfire.ffsaf.data.model.MembreModel;
|
import fr.titionfire.ffsaf.data.model.MembreModel;
|
||||||
import fr.titionfire.ffsaf.utils.KeycloakException;
|
import fr.titionfire.ffsaf.utils.KeycloakException;
|
||||||
|
import fr.titionfire.ffsaf.utils.RequiredAction;
|
||||||
import io.smallrye.mutiny.Uni;
|
import io.smallrye.mutiny.Uni;
|
||||||
import io.smallrye.mutiny.unchecked.Unchecked;
|
import io.smallrye.mutiny.unchecked.Unchecked;
|
||||||
import io.vertx.mutiny.core.Vertx;
|
import io.vertx.mutiny.core.Vertx;
|
||||||
@ -56,7 +57,7 @@ public class KeycloakService {
|
|||||||
response.getStatusInfo().getReasonPhrase()));
|
response.getStatusInfo().getReasonPhrase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return keycloak.realm(realm).groups().group(clubGroup.getId()).toRepresentation().getSubGroups().stream()
|
return keycloak.realm(realm).groups().group(clubGroup.getId()).getSubGroups(0, 1000, true).stream()
|
||||||
.filter(g -> g.getName().startsWith(club.getId() + "-")).findAny().map(GroupRepresentation::getId)
|
.filter(g -> g.getName().startsWith(club.getId() + "-")).findAny().map(GroupRepresentation::getId)
|
||||||
.orElseThrow(() -> new KeycloakException("Fail to fetch group %s*".formatted(club.getId() + "-")));
|
.orElseThrow(() -> new KeycloakException("Fail to fetch group %s*".formatted(club.getId() + "-")));
|
||||||
}
|
}
|
||||||
@ -112,22 +113,26 @@ public class KeycloakService {
|
|||||||
String login = makeLogin(membreModel);
|
String login = makeLogin(membreModel);
|
||||||
LOGGER.infof("Creation of user %s...", login);
|
LOGGER.infof("Creation of user %s...", login);
|
||||||
return vertx.getOrCreateContext().executeBlocking(() -> {
|
return vertx.getOrCreateContext().executeBlocking(() -> {
|
||||||
UserRepresentation user = new UserRepresentation();
|
UserRepresentation user = new UserRepresentation();
|
||||||
user.setUsername(login);
|
user.setUsername(login);
|
||||||
user.setFirstName(membreModel.getFname());
|
user.setFirstName(membreModel.getFname());
|
||||||
user.setLastName(membreModel.getLname());
|
user.setLastName(membreModel.getLname());
|
||||||
user.setEnabled(true);
|
user.setEmail(membreModel.getEmail());
|
||||||
|
user.setEnabled(true);
|
||||||
|
|
||||||
//user.setRequiredActions(List.of(UserModel.RequiredAction.VERIFY_EMAIL.name(),
|
user.setRequiredActions(List.of(RequiredAction.VERIFY_EMAIL.name(),
|
||||||
// UserModel.RequiredAction.UPDATE_PASSWORD.name()));
|
RequiredAction.UPDATE_PASSWORD.name()));
|
||||||
|
|
||||||
try (Response response = keycloak.realm(realm).users().create(user)) {
|
try (Response response = keycloak.realm(realm).users().create(user)) {
|
||||||
if (!response.getStatusInfo().equals(Response.Status.CREATED) && !response.getStatusInfo().equals(Response.Status.CONFLICT))
|
if (!response.getStatusInfo().equals(Response.Status.CREATED) && !response.getStatusInfo().equals(Response.Status.CONFLICT))
|
||||||
throw new KeycloakException("Fail to creat user %s (reason=%s)".formatted(login, response.getStatusInfo().getReasonPhrase()));
|
throw new KeycloakException("Fail to creat user %s (reason=%s)".formatted(login, response.getStatusInfo().getReasonPhrase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return getUser(login).orElseThrow(() -> new KeycloakException("Fail to fetch user %s".formatted(login)));
|
return getUser(login).orElseThrow(() -> new KeycloakException("Fail to fetch user %s".formatted(login)));
|
||||||
}).call(user -> membreService.setUserId(membreModel.getId(), user.getId()));
|
})
|
||||||
|
.invoke(user -> membreModel.setUserId(user.getId()))
|
||||||
|
.call(user -> membreService.setUserId(membreModel.getId(), user.getId()))
|
||||||
|
.call(user -> setClubGroupMembre(membreModel, membreModel.getClub()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<UserRepresentation> getUser(String username) {
|
private Optional<UserRepresentation> getUser(String username) {
|
||||||
|
|||||||
@ -0,0 +1,5 @@
|
|||||||
|
package fr.titionfire.ffsaf.utils;
|
||||||
|
|
||||||
|
public enum RequiredAction {
|
||||||
|
VERIFY_EMAIL, UPDATE_PROFILE, CONFIGURE_TOTP, UPDATE_PASSWORD, TERMS_AND_CONDITIONS
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user