feat: add keycloak role configuration

This commit is contained in:
2024-01-30 20:04:41 +01:00
parent e3306f4b5a
commit 8824a547bc
7 changed files with 213 additions and 87 deletions

View File

@@ -1,6 +1,7 @@
package fr.titionfire.ffsaf.rest;
import fr.titionfire.ffsaf.domain.service.KeycloakService;
import fr.titionfire.ffsaf.rest.from.MemberPermForm;
import io.smallrye.mutiny.Uni;
import jakarta.annotation.security.RolesAllowed;
import jakarta.inject.Inject;
@@ -9,6 +10,9 @@ import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import java.util.ArrayList;
import java.util.List;
@Path("api/compte")
public class CompteEndpoints {
@@ -28,4 +32,30 @@ public class CompteEndpoints {
public Uni<?> initCompte(@PathParam("id") long id) {
return service.initCompte(id);
}
@GET
@Path("{id}/roles")
@RolesAllowed("federation_admin")
public Uni<?> getRole(@PathParam("id") String id) {
return service.fetchRole(id);
}
@PUT
@Path("{id}/roles")
@RolesAllowed("federation_admin")
public Uni<?> updateRole(@PathParam("id") String id, MemberPermForm form) {
List<String> toAdd = new ArrayList<>();
List<String> toRemove = new ArrayList<>();
if (form.isFederation_admin()) toAdd.add("federation_admin");
else toRemove.add("federation_admin");
if (form.isSafca_super_admin()) toAdd.add("safca_super_admin");
else toRemove.add("safca_super_admin");
if (form.isSafca_user()) toAdd.add("safca_user");
else toRemove.add("safca_user");
if (form.isSafca_create_compet()) toAdd.add("safca_create_compet");
else toRemove.add("safca_create_compet");
return service.updateRole(id, toAdd, toRemove);
}
}