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 f5771783eca625243b1bbbfaa5cf8ed60b305354..c181fbb8cfbc10e03a1ae6b41baed62eef51cb1d 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 @@ -53,13 +53,10 @@ public class UserProfileService { public UserProfile[] getUserProfile(String queryString, String field) { Endpoint endpoint = ADConnector.getConnection(); UserProfile[] profiles = null; - if (!queryString.startsWith("*")) { - queryString = queryString.concat("*"); - } try { QueryRequest queryRequest = buildRequest(endpoint); Sentence sentence = null; - if (queryString.contains("*")) { + if (queryString.equals("*")) { sentence = new QueryAssembler().addPhrase(FieldType.OBJECT_CLASS, PhraseOperator.EQUAL, ObjectType.USER.toString()).closeSentence(); } else { if (field.equals("LOGON_NAME")) { @@ -86,6 +83,7 @@ public class UserProfileService { for (int i = 0; i < profiles.length; i++) { profiles[i] = profileFromResponse(results.get(i)); } + profiles = removeNull(profiles); return profiles; } catch (Exception e) { log.error("Could not find entity with specified parameters."); @@ -95,6 +93,14 @@ public class UserProfileService { } } + public UserProfile[] removeNull(UserProfile[] a) { + ArrayList<UserProfile> removedNull = new ArrayList<UserProfile>(); + for (UserProfile p : a) + if (p != null) + removedNull.add(p); + return removedNull.toArray(new UserProfile[0]); + } + public static QueryRequest buildRequest(Endpoint endpoint) { QueryRequest queryRequest = new QueryRequest(); queryRequest.setDirectoryType(DirectoryType.MS_ACTIVE_DIRECTORY); diff --git a/jams-server/src/main/resources/webapp/js/identity-management.js b/jams-server/src/main/resources/webapp/js/identity-management.js index c16fccae6cbe510ce3976b23d9af40a1bcbe54e5..d1bf54dd8216d58d463f36355163f351a3218d14 100644 --- a/jams-server/src/main/resources/webapp/js/identity-management.js +++ b/jams-server/src/main/resources/webapp/js/identity-management.js @@ -62,7 +62,7 @@ function setLDAPParametersData(form) { settings[field.name] = field.value; }); settings['fieldMappings'] = {}; - settings['fieldMappings']['uid'] = "Username" + settings['fieldMappings']['uid'] = "Username"; settings['fieldMappings']['givenName'] = "FirstName"; settings['fieldMappings']['sn'] = "LastName"; settings['fieldMappings']['jpegPhoto'] = "ProfilePicture"; @@ -72,13 +72,11 @@ function setLDAPParametersData(form) { settings['fieldMappings']['facsimileTelephoneNumber'] = "FaxNumber"; settings['fieldMappings']['extensionName'] = "PhoneNumberExtension"; settings['fieldMappings']['o'] = "Organization"; - settings['fieldMappings']['uid'] = "Username"; authSource['type'] = 'LDAP'; authSource['ldapSettings'] = settings; - var data = authSource; // post request - postParameters(data); + ajaxApiCall(api_path_post_install_auth,'POST',authSource,null, handleAuthInstall); } function setADParametersData(form) { @@ -94,31 +92,30 @@ function setADParametersData(form) { }); settings['fieldMappings'] = {}; - settings['fieldMappings']['sAMAccountName'] = "Username" - settings['fieldMappings']['givenName'] = "FirstName"; + settings['fieldMappings']['samaccountname'] = "Username"; + settings['fieldMappings']['givenname'] = "FirstName"; settings['fieldMappings']['sn'] = "LastName"; - settings['fieldMappings']['jpegPhoto'] = "ProfilePicture"; + settings['fieldMappings']['thumbnailphoto'] = "ProfilePicture"; settings['fieldMappings']['mail'] = "Email"; - settings['fieldMappings']['telephoneNumber'] = "PhoneNumber"; + settings['fieldMappings']['telephonenumber'] = "PhoneNumber"; settings['fieldMappings']['mobile'] = "MobileNumber"; - settings['fieldMappings']['facsimileTelephoneNumber'] = "FaxNumber"; - settings['fieldMappings']['extensionName'] = "PhoneNumberExtension"; + settings['fieldMappings']['facsimiletelephonenumber'] = "FaxNumber"; + settings['fieldMappings']['extensionname'] = "PhoneNumberExtension"; settings['fieldMappings']['o'] = "Organization"; - settings['fieldMappings']['uid'] = "Username"; authSource['type'] = 'AD'; authSource['activeDirectorySettings'] = settings; - var data = authSource; // post request - postParameters(data); + ajaxApiCall(api_path_post_install_auth,'POST',authSource,null, handleAuthInstall); } -// send post request -function postParameters(data) { - usePublicNS = $('#publicNS')[0].checked; - var callback = set_installation_response("server-parameters.html" + "?usePublicNS=" + usePublicNS); - - ajaxApiCall(api_path_post_install_auth,'POST',data,null,callback); +function handleAuthInstall(data) { + if (data.status == 500 || data.status == 405) + $('#badAuthModalCenter').modal('show'); + else { + usePublicNS = $('#publicNS')[0].checked; + window.location.replace("server-parameters.html" + "?usePublicNS=" + usePublicNS); + } } // show tooltip diff --git a/jams-server/src/main/resources/webapp/js/search.js b/jams-server/src/main/resources/webapp/js/search.js index 677ff79c5e1cadd224163652b6567b14c90b2ba0..8a3c9692dc3b42959da88d037f4c773874d82df5 100644 --- a/jams-server/src/main/resources/webapp/js/search.js +++ b/jams-server/src/main/resources/webapp/js/search.js @@ -132,10 +132,11 @@ function listAllUsers(data, statusCode, jqXHR) '<tr class="user-data bubble"><td data-href="aa" class="mobile">Username</td><td style="cursor:pointer;" data-href="user.html?username=' + encodeURIComponent(resultSet[i].username) + '">' + resultSet[i].username + '</td><td class="mobile">First Name</td><td style="cursor:pointer;" data-href="user.html?username=' + encodeURIComponent(resultSet[i].username) + '">' + firstName + '' + '</td><td class="mobile">Last Name</td><td style="cursor:pointer;" data-href="user.html?username=' + encodeURIComponent(resultSet[i].username) + '">' + lastName + - '</td><td class="mobile">Devices</td><td style="cursor:pointer;" data-href="user.html?username=' + encodeURIComponent(resultSet[i].username) +'"><i class="fa fa-mobile"></i></td><td class="spacer--table">spacer</td>' + + '</td><td class="mobile">Devices</td><td style="cursor:pointer;" data-href="user.html?username=' + encodeURIComponent(resultSet[i].username) + '"><i class="fa fa-mobile"></i></td><td class="spacer--table">spacer</td>' + '<td class="mobile">Actions</td><td class="user-information-search"><button class="edit-user" title="Edit User" style="display: none;" user-id="' + encodeURIComponent(resultSet[i].username) + '"><i class="fa fa-edit"></i></button>' + '<button type="button" id="de-authorize-user" class="btn-danger de-authorize-user" title="Revoke User" user-id="' + encodeURIComponent(resultSet[i].username) + '"' + '><i class="fa fa-trash"></i></button>' + '</td><td class="spacer--table">spacer</td></tr>' + } $('.empty-results').remove(); diff --git a/jams-server/src/main/resources/webapp/js/user.js b/jams-server/src/main/resources/webapp/js/user.js index 415ec196aff6ef59a1e4bbcf4da3bd9a20b0c5b9..d9ed7fc1293ef4f1444aa2e7c7bf9e62ff2b8d72 100644 --- a/jams-server/src/main/resources/webapp/js/user.js +++ b/jams-server/src/main/resources/webapp/js/user.js @@ -187,7 +187,7 @@ function setUserInfoDataSource(data, statusCode, jqXHR) { var disabled = ''; if (resultSet.length > 0) { // build table row for User item - for (i = 0; i < resultSet.length; i++) { + for (i = 0; i < 1; i++) { // determine User status if (userStatus == "Revoked") { diff --git a/jams-server/src/main/resources/webapp/templates/footer.html b/jams-server/src/main/resources/webapp/templates/footer.html index cab3568eacaa94dc370e85380f84c54bca2f4446..a7cd5b27ae172c37626692459b55cc3f563c7614 100644 --- a/jams-server/src/main/resources/webapp/templates/footer.html +++ b/jams-server/src/main/resources/webapp/templates/footer.html @@ -289,4 +289,20 @@ </div> </div> </div> +</div> + +<div id="badAuthModalCenter" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="badAuthModalLongTitle"> +<div class="modal-dialog modal-dialog-centered" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title" id="badAuthModalLongTitle">CA Error</h5> + </div> + <div class="ca-modal-body"> + The supplied configuration is invalid or the connectivity tests has failed. + </div> + <div class="modal-footer"> + <button data-dismiss="modal" class="btn btn-outline-primary btn-link" type="button">OK</button> + </div> + </div> +</div> </div> \ No newline at end of file