Skip to content
Snippets Groups Projects
Select Git revision
  • ce03d4ca70fc9b95c52a246daf9246cac7c97e3a
  • main default protected
  • release
  • master-interface-proto4
  • ozg-5634-ozgcloud-ingress
  • OZG-3322_connect_to_mongodb_over_tls
  • 2.20.0
  • 2.19.0
  • 2.18.0
  • 2.17.0
  • 2.16.0
  • 2.15.0
  • 2.14.0
  • 2.13.0
  • 2.12.0
  • 2.11.0
  • 2.10.1
  • 2.10.0
  • 2.9.0
  • 2.8.0
  • 2.7.1
  • 2.7.0
  • 2.6.0
  • 2.5.1
  • 2.5.0
  • 2.4.0
26 results

build-native-local-docker-image.sh

Blame
  • UserResourceMapper.java 3.11 KiB
    package de.itvsh.kop.user;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Date;
    import java.util.List;
    import java.util.Objects;
    import java.util.Optional;
    
    import javax.inject.Inject;
    
    import org.keycloak.admin.client.resource.UserResource;
    import org.keycloak.representations.idm.ClientMappingsRepresentation;
    import org.keycloak.representations.idm.RoleRepresentation;
    import org.mapstruct.Mapper;
    import org.mapstruct.Mapping;
    import org.mapstruct.ReportingPolicy;
    
    import de.itvsh.kop.user.keycloak.KeycloakApiProperties;
    
    @Mapper(unmappedTargetPolicy = ReportingPolicy.WARN)
    public abstract class UserResourceMapper {
    
    	@Inject
    	KeycloakApiProperties properties;
    
    	@Mapping(target = "createdAt", expression = "java(mapCreatedAt(userRes))")
    	@Mapping(target = "email", expression = "java(mapEmail(userRes))")
    	@Mapping(target = "firstName", expression = "java(mapFirstName(userRes))")
    	@Mapping(target = "lastName", expression = "java(mapLastName(userRes))")
    	@Mapping(target = "username", expression = "java(mapUsername(userRes))")
    	@Mapping(target = "externalId", expression = "java(mapId(userRes))")
    	@Mapping(target = "organisationsEinheitIds", expression = "java(mapOrganisationsEinheitIds(userRes))")
    	@Mapping(target = "roles", expression = "java(mapRoles(userRes))")
    	@Mapping(target = "lastSyncTimestamp", ignore = true)
    	@Mapping(target = "deleted", ignore = true)
    	public abstract User toKopUser(UserResource userRes);
    
    	Date mapCreatedAt(UserResource userRes) {
    		var createdAt = userRes.toRepresentation().getCreatedTimestamp();
    
    		return createdAt != null ? new Date(createdAt) : new Date();
    	}
    
    	List<String> mapOrganisationsEinheitIds(UserResource userRes) {
    		return getOrganisationsEinheitIdsFromUserAttributes(userRes);
    	}
    
    	private List<String> getOrganisationsEinheitIdsFromUserAttributes(UserResource userResource) {
    		var attributes = userResource.toRepresentation().getAttributes();
    		return attributes != null ? attributes.get(properties.organisationsEinheitIdKey()) : new ArrayList<>();
    	}
    
    	List<String> mapRoles(UserResource userRes) {
    		var roleRepresentation = Optional.ofNullable(userRes.roles().getAll().getClientMappings())
    				.filter(Objects::nonNull)
    				.filter(map -> map.containsKey(properties.client()))
    				.map(map -> map.get(properties.client()))
    				.map(ClientMappingsRepresentation::getMappings)
    				.orElseGet(Collections::emptyList);
    
    		return roleRepresentation.stream().map(RoleRepresentation::getName).toList();
    	}
    
    	String mapId(UserResource userRes) {
    		var userRepresentation = userRes.toRepresentation();
    		var attributes = userRepresentation.getAttributes();
    		var id = attributes != null ? attributes.get(properties.ldapIdKey()) : null;
    		return id != null ? id.get(0) : userRepresentation.getId();
    	}
    
    	String mapEmail(UserResource userRes) {
    		return userRes.toRepresentation().getEmail();
    	}
    
    	String mapFirstName(UserResource userRes) {
    		return userRes.toRepresentation().getFirstName();
    	}
    
    	String mapLastName(UserResource userRes) {
    		return userRes.toRepresentation().getLastName();
    	}
    
    	String mapUsername(UserResource userRes) {
    		return userRes.toRepresentation().getUsername();
    	}
    }