feat: add membre list filter

This commit is contained in:
2024-02-06 21:39:42 +01:00
parent 40427b8cfb
commit 2fd6ef3c2e
15 changed files with 384 additions and 156 deletions

View File

@@ -4,7 +4,7 @@ import fr.titionfire.ffsaf.domain.service.KeycloakService;
import fr.titionfire.ffsaf.rest.from.MemberPermForm;
import fr.titionfire.ffsaf.utils.GroupeUtils;
import fr.titionfire.ffsaf.utils.Pair;
import io.quarkus.oidc.IdToken;
import io.quarkus.security.identity.SecurityIdentity;
import io.smallrye.mutiny.Uni;
import io.vertx.mutiny.core.Vertx;
import jakarta.annotation.security.RolesAllowed;
@@ -26,8 +26,7 @@ public class CompteEndpoints {
JsonWebToken accessToken;
@Inject
@IdToken
JsonWebToken idToken;
SecurityIdentity securityIdentity;
@Inject
Vertx vertx;
@@ -37,8 +36,8 @@ public class CompteEndpoints {
@RolesAllowed({"federation_admin", "club_president", "club_secretaire", "club_respo_intra"})
public Uni<KeycloakService.UserCompteState> getCompte(@PathParam("id") String id) {
return service.fetchCompte(id).call(pair -> vertx.getOrCreateContext().executeBlocking(() -> {
if (!idToken.getGroups().contains("federation_admin") && !pair.getKey().groups().stream().map(GroupRepresentation::getPath)
.anyMatch(s -> s.startsWith("/club/") && GroupeUtils.contains(s, accessToken)))
if (!securityIdentity.getRoles().contains("federation_admin") && pair.getKey().groups().stream().map(GroupRepresentation::getPath)
.noneMatch(s -> s.startsWith("/club/") && GroupeUtils.contains(s, accessToken)))
throw new ForbiddenException();
return pair;
})).map(Pair::getValue);