Commit 0c40ec69c14c14aec9891977baef70445e909585

Authored by Megan Watson
1 parent d8a4c52b

KTC-265

"LDAP users can be imported many times over"
Fixed. Added KTC-265
"LDAP users can be imported many times over"
Fixed. Removed users that have already been imported from the list returned by the LDAP server.

Committed By: Megan Watson
Reviewed By: Conrad Vermeulen


Committed By: Megan Watson
Reviewed By: Conrad Vermeulen

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7841 c91229c3-7414-0410-bfa2-8a42b809f60b
plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php
... ... @@ -439,10 +439,27 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider {
439 439 }
440 440  
441 441 if (is_array($aSearchResults)) {
442   - foreach (array_keys($aSearchResults) as $k) {
  442 + $aSearchResultsKeys = array_keys($aSearchResults);
  443 + $aSearchDNs = array();
  444 + foreach ($aSearchResultsKeys as $k) {
443 445 if (is_array($aSearchResults[$k]['cn'])) {
444 446 $aSearchResults[$k]['cn'] = $aSearchResults[$k]['cn'][0];
445 447 }
  448 + $aSearchDNs[$k] = "'".$aSearchResults[$k]['dn']."'";
  449 + }
  450 +
  451 + $sDNs = implode(',', $aSearchDNs);
  452 + $query = "SELECT id, authentication_details_s1 AS dn FROM users
  453 + WHERE authentication_details_s1 IN ($sDNs)";
  454 + $aCurUsers = DBUtil::getResultArray($query);
  455 +
  456 + // If the user has already been added, then remove from the list
  457 + if(!PEAR::isError($aCurUsers) && !empty($aCurUsers)){
  458 + foreach($aCurUsers as $item){
  459 + $key = array_search("'".$item['dn']."'", $aSearchDNs);
  460 + $aKeys[] = $key;
  461 + unset($aSearchResults[$key]);
  462 + }
446 463 }
447 464 }
448 465 }
... ...