Files
unionflow-server-impl-quarkus/src/main/java/dev/lions/unionflow/server/resource/RoleResource.java
2026-04-24 16:19:25 +00:00

56 lines
1.9 KiB
Java

package dev.lions.unionflow.server.resource;
import dev.lions.unionflow.server.api.dto.role.response.RoleResponse;
import dev.lions.unionflow.server.entity.Role;
import dev.lions.unionflow.server.service.RoleService;
import jakarta.annotation.security.RolesAllowed;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
import java.util.List;
import java.util.stream.Collectors;
/**
* Resource REST pour les rôles.
*/
@Path("/api/roles")
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed({"ADMIN", "SUPER_ADMIN", "ADMIN_ORGANISATION"})
@Tag(name = "Rôles", description = "Gestion des rôles et permissions")
public class RoleResource {
@Inject
RoleService roleService;
@GET
@Operation(summary = "Liste tous les rôles actifs")
public List<RoleResponse> listerTous() {
return roleService.listerTousActifs().stream()
.map(this::toDTO)
.collect(Collectors.toList());
}
private RoleResponse toDTO(Role entity) {
RoleResponse dto = new RoleResponse();
dto.setId(entity.getId());
dto.setCode(entity.getCode());
dto.setLibelle(entity.getLibelle());
dto.setDescription(entity.getDescription());
dto.setTypeRole(entity.getTypeRole());
dto.setNiveauHierarchique(entity.getNiveauHierarchique());
if (entity.getOrganisation() != null) {
dto.setOrganisationId(entity.getOrganisation().getId());
dto.setNomOrganisation(entity.getOrganisation().getNom());
}
dto.setActif(entity.getActif());
dto.setDateCreation(entity.getDateCreation());
dto.setDateModification(entity.getDateModification());
return dto;
}
}