From b1144dad137a73bfa52bd416ecb78203bd204992 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 19 Sep 2013 12:15:11 +0200 Subject: [PATCH] Fixing array key association see BT#6410 --- main/auth/external_login/ldap.inc.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/main/auth/external_login/ldap.inc.php b/main/auth/external_login/ldap.inc.php index 173b13da3b..118907f28f 100644 --- a/main/auth/external_login/ldap.inc.php +++ b/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;