commit
837b6d37b5
@ -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,17 +89,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) {
|
||||||
@ -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()));
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user