dev #7

Merged
Thibaut merged 3 commits from dev into master 2025-01-21 10:03:39 +00:00
3 changed files with 32 additions and 15 deletions

View File

@ -42,6 +42,9 @@ public class KeycloakService {
@ConfigProperty(name = "keycloak.realm") @ConfigProperty(name = "keycloak.realm")
String realm; String realm;
@ConfigProperty(name = "email.enabled")
boolean enabled_email;
@Inject @Inject
Vertx vertx; Vertx vertx;
@ -86,6 +89,15 @@ public class KeycloakService {
} }
public Uni<String> setClubGroupMembre(MembreModel membreModel, ClubModel club) { public Uni<String> setClubGroupMembre(MembreModel membreModel, ClubModel club) {
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( return getGroupFromClub(club).chain(
clubId -> getUserFromMember(membreModel).chain( clubId -> getUserFromMember(membreModel).chain(
userId -> vertx.getOrCreateContext().executeBlocking(() -> { userId -> vertx.getOrCreateContext().executeBlocking(() -> {
@ -206,9 +218,12 @@ public class KeycloakService {
return getUser(login).orElseThrow( return getUser(login).orElseThrow(
() -> new KeycloakException("Fail to fetch user %s".formatted(finalLogin))); () -> new KeycloakException("Fail to fetch user %s".formatted(finalLogin)));
}) })
//.invoke(user -> keycloak.realm(realm).users().get(user.getId()) // TODO enable for production .invoke(user -> {
// .executeActionsEmail(List.of(RequiredAction.VERIFY_EMAIL.name(), if (enabled_email)
// RequiredAction.UPDATE_PASSWORD.name()))) keycloak.realm(realm).users().get(user.getId())
.executeActionsEmail(List.of(RequiredAction.VERIFY_EMAIL.name(),
RequiredAction.UPDATE_PASSWORD.name()));
})
.invoke(user -> membreModel.setUserId(user.getId())) .invoke(user -> membreModel.setUserId(user.getId()))
.call(user -> membreService.setUserId(membreModel.getId(), user.getId())) .call(user -> membreService.setUserId(membreModel.getId(), user.getId()))
.call(user -> setClubGroupMembre(membreModel, membreModel.getClub())); .call(user -> setClubGroupMembre(membreModel, membreModel.getClub()));

View File

@ -26,6 +26,8 @@ quarkus.oidc.roles.source=accesstoken
quarkus.http.limits.max-body-size=10M quarkus.http.limits.max-body-size=10M
email.enabled=false
database.prefix = test2_ database.prefix = test2_
database.database=ffsaf database.database=ffsaf
database.hostname=localhost database.hostname=localhost

View File

@ -141,7 +141,7 @@ function MakeCentralPanel({data, visibleclub, navigate, showAffiliationState, pa
function MakeRow({club, showAffiliationState, navigate}) { function MakeRow({club, showAffiliationState, navigate}) {
const rowContent = <> const rowContent = <>
<div className="row"> <div className="row">
<span className="col-auto">{String(club.no_affiliation).padStart(5, '0')}</span> <span className="col-auto">{club.no_affiliation ? String(club.no_affiliation).padStart(5, '0') : "-------"}</span>
<div className="ms-2 col-auto"> <div className="ms-2 col-auto">
<div className="fw-bold">{club.name}</div> <div className="fw-bold">{club.name}</div>
</div> </div>