package dev.lions.user.manager.mapper; import dev.lions.user.manager.dto.role.RoleDTO; import dev.lions.user.manager.enums.role.TypeRole; import org.keycloak.representations.idm.RoleRepresentation; import java.util.List; import java.util.stream.Collectors; /** * Mapper pour convertir entre RoleDTO et Keycloak RoleRepresentation */ public class RoleMapper { /** * Convertit une RoleRepresentation Keycloak en RoleDTO */ public static RoleDTO toDTO(RoleRepresentation roleRep, String realmName, TypeRole typeRole) { if (roleRep == null) { return null; } return RoleDTO.builder() .id(roleRep.getId()) .name(roleRep.getName()) .description(roleRep.getDescription()) .typeRole(typeRole) .realmName(realmName) .composite(roleRep.isComposite()) .build(); } /** * Convertit un RoleDTO en RoleRepresentation Keycloak */ public static RoleRepresentation toRepresentation(RoleDTO roleDTO) { if (roleDTO == null) { return null; } RoleRepresentation roleRep = new RoleRepresentation(); roleRep.setId(roleDTO.getId()); roleRep.setName(roleDTO.getName()); roleRep.setDescription(roleDTO.getDescription()); roleRep.setComposite(roleDTO.isComposite()); roleRep.setClientRole(roleDTO.getTypeRole() == TypeRole.CLIENT_ROLE); return roleRep; } /** * Convertit une liste de RoleRepresentation en liste de RoleDTO */ public static List toDTOList(List roleReps, String realmName, TypeRole typeRole) { if (roleReps == null) { return List.of(); } return roleReps.stream() .map(roleRep -> toDTO(roleRep, realmName, typeRole)) .collect(Collectors.toList()); } /** * Convertit une liste de RoleDTO en liste de RoleRepresentation */ public static List toRepresentationList(List roleDTOs) { if (roleDTOs == null) { return List.of(); } return roleDTOs.stream() .map(RoleMapper::toRepresentation) .collect(Collectors.toList()); } }