package com.constellio.model.conf.ldap.services;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.constellio.model.conf.ldap.config.LDAPServerConfiguration;
import com.constellio.model.conf.ldap.config.LDAPUserSyncConfiguration;
import com.constellio.model.conf.ldap.services.LDAPServicesException.CouldNotConnectUserToLDAP;
import com.constellio.model.conf.ldap.user.LDAPGroup;
import com.constellio.model.conf.ldap.user.LDAPUser;
public class AzureADServices implements LDAPServices {
private static final Logger LOGGER = LoggerFactory.getLogger(LDAPServicesImpl.class);
@Override
public void authenticateUser(LDAPServerConfiguration ldapServerConfiguration, String user, String password)
throws CouldNotConnectUserToLDAP {
new AzureAdClient(ldapServerConfiguration, null).authenticate(user, password);
}
@Override
public List<String> getTestSynchronisationUsersNames(final LDAPServerConfiguration ldapServerConfiguration,
final LDAPUserSyncConfiguration ldapUserSyncConfiguration) {
return new ArrayList<>(new AzureAdClient(ldapServerConfiguration, ldapUserSyncConfiguration).getUserNameList());
}
@Override
public List<String> getTestSynchronisationGroups(final LDAPServerConfiguration ldapServerConfiguration,
final LDAPUserSyncConfiguration ldapUserSyncConfiguration) {
return new ArrayList<>(new AzureAdClient(ldapServerConfiguration, ldapUserSyncConfiguration).getGroupNameList());
}
@Override
public LDAPUsersAndGroups importUsersAndGroups(final LDAPServerConfiguration ldapServerConfiguration,
final LDAPUserSyncConfiguration ldapUserSyncConfiguration,
final String url) {
final Map<String, LDAPGroup> ldapGroups = new HashMap<>();
final Map<String, LDAPUser> ldapUsers = new HashMap<>();
final AzureAdClient azureAdClient = new AzureAdClient(ldapServerConfiguration, ldapUserSyncConfiguration);
azureAdClient.getGroupsAndTheirUsers(ldapGroups, ldapUsers);
azureAdClient.getUsersAndTheirGroups(ldapGroups, ldapUsers);
return new LDAPUsersAndGroups(new HashSet<>(ldapUsers.values()), new HashSet<>(ldapGroups.values()));
}
}