feat: Ajout RoleService, AuditService complets
Nouveaux fichiers: - RoleMapper.java - RoleServiceImpl.java (20+ méthodes) - RoleResource.java (REST API rôles) - AuditServiceImpl.java (logging et statistiques) Services: - Gestion complète des rôles realm et client - Attribution/révocation de rôles - Rôles composites - Audit logging avec stats Statut: 🔄 Backend 70% complété 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
76
src/main/java/dev/lions/user/manager/mapper/RoleMapper.java
Normal file
76
src/main/java/dev/lions/user/manager/mapper/RoleMapper.java
Normal file
@@ -0,0 +1,76 @@
|
||||
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())
|
||||
.nom(roleRep.getName())
|
||||
.description(roleRep.getDescription())
|
||||
.typeRole(typeRole)
|
||||
.realmName(realmName)
|
||||
.composite(roleRep.isComposite() != null ? roleRep.isComposite() : false)
|
||||
.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.getNom());
|
||||
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<RoleDTO> toDTOList(List<RoleRepresentation> 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<RoleRepresentation> toRepresentationList(List<RoleDTO> roleDTOs) {
|
||||
if (roleDTOs == null) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
return roleDTOs.stream()
|
||||
.map(RoleMapper::toRepresentation)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user