in data-catalog-api/server/custos-sharing/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManagerImpl.java [131:160]
public UserEntity resolveUser(UserInfo userInfo) throws SharingException {
Optional<UserEntity> maybeUserEntity = userRepository.findByExternalIdAndTenant_ExternalId(userInfo.getUserId(),
userInfo.getTenantId());
if (maybeUserEntity.isPresent()) {
return maybeUserEntity.get();
} else {
try (UserManagementClient userManagementClient = custosClientProvider.getUserManagementClient()) {
FindUsersResponse findUsersResponse = userManagementClient.findUsers(userInfo.getTenantId(),
null, userInfo.getUserId(), null, null, null, 0, 1);
if (!findUsersResponse.getUsersList().isEmpty()) {
UserRepresentation userProfile = findUsersResponse.getUsersList().get(0);
TenantEntity tenantEntity = resolveTenant(userInfo);
UserEntity userEntity = new UserEntity();
userEntity.setExternalId(userProfile.getUsername());
userEntity.setName(userProfile.getUsername());
userEntity.setTenant(tenantEntity);
return userRepository.save(userEntity);
} else {
throw new SharingException("User " + userInfo.getUserId() + " in tenant "
+ userInfo.getTenantId() + " not found in Identity Sever ");
}
} catch (IOException e) {
throw new SharingException("Error occurred while resolving user " + userInfo.getUserId()
+ " tenant " + userInfo.getTenantId(), e);
}
}
}