diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java index 0b270ced2c0e647c4310554f1058a180161add2f..29df5c557b8d74f506c4001ba11cf4e036f6555a 100644 --- a/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java +++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java @@ -67,7 +67,7 @@ public class ADConnector implements AuthenticationSource { } @Override - public UserProfile getUserProfile(String queryString, String field) { + public UserProfile[] getUserProfile(String queryString, String field) { return userProfileService.getUserProfile(queryString,field); } diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java index c686d80783132b8cb799ac1745e30153be7e4720..1bac115c9f81d5aa4f05b1a3a1324522eae96586 100644 --- a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java +++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java @@ -32,8 +32,9 @@ public class UserProfileService { fieldMap.put("o","Organization"); } - public UserProfile getUserProfile(String queryString, String field){ + public UserProfile[] getUserProfile(String queryString, String field){ Endpoint endpoint = ADConnector.getConnection(); + UserProfile[] profiles = null; try{ QueryRequest queryRequest = buildRequest(endpoint); Sentence sentence = null; @@ -51,8 +52,12 @@ public class UserProfileService { try(Connector connector = new Connector(queryRequest)) { queryResponse = connector.execute(); } - List<Field> fields = queryResponse.getAll().stream().map(EntityResponse::getValue).collect(Collectors.toList()).get(0); - return profileFromResponse(fields); + List<List<Field>> results = queryResponse.getAll().stream().map(EntityResponse::getValue).collect(Collectors.toList()); + if(results.size() > 0) profiles = new UserProfile[results.size()]; + for(int i=0;i< profiles.length; i++){ + profiles[i] = profileFromResponse(results.get(i)); + } + return profiles; } catch (Exception e){ log.error("Could not find entity with specified parameters."); diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java index c8acdbe60ea623b4a9ce9eed0ccb454120c54d9c..76ecca9214d95c00fde450d04afb63fcf59eb046 100644 --- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java +++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java @@ -47,7 +47,7 @@ public class DataStore implements AuthenticationSource { } @Override - public UserProfile getUserProfile(String queryString, String field) { + public UserProfile[] getUserProfile(String queryString, String field) { return null; } diff --git a/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java b/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java index d2c95a25827bbc58d1f9df1fa8a379eb1c19084a..ab1e1b5c588beb342a5d3e4a1a89b1cc4561d701 100644 --- a/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java +++ b/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java @@ -6,7 +6,7 @@ import net.jami.jams.common.objects.user.UserProfile; public interface AuthenticationSource { boolean createUser(User user); - UserProfile getUserProfile(String queryString, String field); + UserProfile[] getUserProfile(String queryString, String field); boolean authenticate(String username, String password); AuthenticationSourceInfo getInfo(); boolean testConfiguration(String configuration); diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java index ecb00bbb3648fbad38724db71e7582868d4b4ae7..49c01881c622144281919fd76c940119cd9e55d2 100644 --- a/jams-server/src/main/java/net/jami/jams/server/Server.java +++ b/jams-server/src/main/java/net/jami/jams/server/Server.java @@ -57,12 +57,12 @@ public class Server { try { InputStream path; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - path = classLoader.getResourceAsStream("ldapconfig.json"); - userAuthenticationModule.attachLDAPAuthSource(new String(path.readAllBytes())); - UserProfile userProfile = userAuthenticationModule.getAuthenticationSources() - .get(new AuthModuleKey("savoirfairelinux", AuthenticationSourceType.LDAP)) + path = classLoader.getResourceAsStream("adsampleconfig.json"); + userAuthenticationModule.attachADAuthSource(new String(path.readAllBytes())); + UserProfile[] userProfile = userAuthenticationModule.getAuthenticationSources() + .get(new AuthModuleKey("SAVOIRFAIRELINU", AuthenticationSourceType.AD)) .getUserProfile("Sidokhine","FULL_TEXT_NAME"); - System.out.println(userProfile); + System.out.println(userProfile[0]); } catch (Exception e) { log.error("Could not load and inject active directory connector with error: " + e.toString()); } diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java index 194212863ac904972a05a6e5d29a1405bc2fdf68..a1d380908ef857ed7ac0782521db6210ff8e0e3b 100644 --- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java +++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java @@ -45,7 +45,7 @@ public class LDAPConnector implements AuthenticationSource { } @Override - public UserProfile getUserProfile(String queryString, String field) { + public UserProfile[] getUserProfile(String queryString, String field) { return userProfileService.getUserProfile(queryString,field); } diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java index faff16aaf2d5a234e092829f27c54afcc072fcce..1f1f04710a7cedb85b9eae15a5aac2d74b88afce 100644 --- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java +++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java @@ -29,7 +29,8 @@ public class UserProfileService { this.connectionFactory = connectionFactory; } - public UserProfile getUserProfile(String queryString, String field){ + public UserProfile[] getUserProfile(String queryString, String field){ + UserProfile[] profiles = null; Connection connection = null; try { connection = connectionFactory.getConnection(); @@ -37,8 +38,11 @@ public class UserProfileService { connection.open(); SearchOperation search = new SearchOperation(connectionFactory); SearchResponse res = search.execute(buildRequest(queryString,field)); - if (res.getEntries().size() > 0) return profileFromResponse(res.getEntry()); - return null; + if (res.getEntries().size() > 0) profiles = new UserProfile[res.getEntries().size()]; + for(int i=0; i< profiles.length; i++){ + profiles[i] = profileFromResponse(res.getEntry()); + } + return profiles; } catch (Exception e) { log.error("Could not search LDAP directory with error " + e.toString()); return null;