Browse Source

Fixing array key association see BT#6410

Julio Montoya 11 years ago
parent
commit
b1144dad13
1 changed files with 13 additions and 11 deletions
  1. 13 11
      main/auth/external_login/ldap.inc.php

+ 13 - 11
main/auth/external_login/ldap.inc.php

@@ -295,27 +295,29 @@ function extldap_import_all_users()
  */
 function extldap_add_user_by_array($data, $update_if_exists = true)
 {
-    $lastname  = api_convert_encoding($data['sn'][0], api_get_system_encoding(), 'UTF-8');
-    $firstname = api_convert_encoding($data['cn'][0], api_get_system_encoding(), 'UTF-8');
-    $email     = $data['mail'][0];
-    // Get uid from dn
-    $dn_array = ldap_explode_dn($data['dn'], 1);
-    $username = $dn_array[0]; // uid is first key
-    $outab[]  = $data['edupersonprimaryaffiliation'][0]; // Here, "student"
-    //$val = ldap_get_values_len($ds, $entry, "userPassword");
-    //$val = ldap_get_values_len($ds, $data, "userPassword");
-    //$password = $val[0];
+    global $extldap_user_correspondance;
+
+    $lastname  = api_convert_encoding($data[$extldap_user_correspondance['lastname']][0], api_get_system_encoding(), 'UTF-8');
+    $firstname = api_convert_encoding($data[$extldap_user_correspondance['firstname']][0], api_get_system_encoding(), 'UTF-8');
+    $email     = $data[$extldap_user_correspondance['email']][0];
+    $username  = $data[$extldap_user_correspondance['username']][0];
+
     // TODO the password, if encrypted at the source, will be encrypted twice, which makes it useless. Try to fix that.
-    $password        = $data['userPassword'][0];
+    $passwordKey = isset($extldap_user_correspondance['password']) ? $extldap_user_correspondance['password'] : 'userPassword';
+    $password        = $data[$passwordKey][0];
+
+    // Structure
     $structure       = $data['edupersonprimaryorgunitdn'][0];
     $array_structure = explode(",", $structure);
     $array_val       = explode("=", $array_structure[0]);
     $etape           = $array_val[1];
     $array_val       = explode("=", $array_structure[1]);
     $annee           = $array_val[1];
+
     // To ease management, we add the step-year (etape-annee) code
     $official_code = $etape."-".$annee;
     $auth_source   = 'ldap';
+
     // No expiration date for students (recover from LDAP's shadow expiry)
     $expiration_date = '0000-00-00 00:00:00';
     $active          = 1;