if ($ldap_write_access) { $create_ldap_user = true; } } elseif (($old_auth_mode == "sso" || $old_auth_mode == "ldap") && $_POST['reg_auth_mode'] == "gepi") { // Passage au mode Gepi, rien de spécial à faire, si ce n'est annoncer à l'administrateur // qu'il va falloir réinitialiser les mots de passe $pass_init_required = true; // Et si accès en écriture au LDAP, on supprime le compte. if ($ldap_write_access) { $delete_ldap_user = true; } } // On effectue les opérations LDAP if (isset($create_ldap_user) && $create_ldap_user) { if (!$ldap_server->test_user($current_parent->login)) { $parent = mysqli_fetch_object(mysqli_query($GLOBALS["mysqli"], "SELECT distinct(r.login), r.nom, r.prenom, r.civilite, r.mel " . "FROM resp_pers r WHERE (" . "r.login = '******')")); $write_ldap_success = $ldap_server->add_user($parent->login, $parent->nom, $parent->prenom, $parent->mel, $parent->civilite, md5(rand()), "responsable"); // On transfert le mot de passe à la main $ldap_server->set_manual_password($current_parent->login, "{MD5}".base64_encode(pack("H*",$oldmd5password))); } } if (isset($delete_ldap_user) && $delete_ldap_user) { if (!$ldap_server->test_user($current_parent->login)) { // L'utilisateur n'a pas été trouvé dans l'annuaire. $write_ldap_success = true; } else { $write_ldap_success = $ldap_server->delete_user($current_parent->login); }
if (isset($create_ldap_user) && $create_ldap_user) { $ldap_server = new LDAPServer; if ($ldap_server->test_user($user_login)) { // L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas. $write_ldap_success = true; $msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent.<br/>"; } else { $write_ldap_success = $ldap_server->add_user($user_login, $_POST['reg_nom'], $_POST['reg_prenom'], $_POST['reg_email'], $_POST['reg_civilite'], md5(rand()), $_POST['reg_statut']); // On transfert le mot de passe à la main $ldap_server->set_manual_password($user_login, "{MD5}".base64_encode(pack("H*",$oldmd5password))); } } if (isset($delete_ldap_user) && $delete_ldap_user) { $ldap_server = new LDAPServer; if (!$ldap_server->test_user($user_login)) { // L'utilisateur n'a pas été trouvé dans l'annuaire. $write_ldap_success = true; } else { $write_ldap_success = $ldap_server->delete_user($user_login); } } $reg_data = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."', login='******'reg_login']."',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."',etat='".$_POST['reg_etat']."',auth_mode='".$_POST['reg_auth_mode']."' WHERE login='******'"); $del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres WHERE id_professeur = '".$user_login."'"); $m = 0; while ($m < $_POST['max_mat']) { $num=$m+1; if ($reg_matiere[$m] != '') { $test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres WHERE (id_professeur = '".$user_login."' and id_matiere = '$reg_matiere[$m]')");
$civilite = ''; if ($current_eleve->sexe == "M") { $civilite = "M."; } elseif ($current_eleve->sexe == "F") { $civilite = "Mlle"; } // Si on a un accès LDAP en écriture, on créé le compte sur le LDAP // On ne procède que si le LDAP est configuré en écriture, qu'on a activé // l'auth LDAP ou SSO, et que c'est un de ces deux modes qui a été choisi pour cet utilisateur. if (LDAPServer::is_setup() && $gepiSettings["ldap_write_access"] == "yes" && ($session_gepi->auth_ldap || $session_gepi->auth_sso) && ($_POST['reg_auth_mode'] == 'auth_ldap' || $_POST['reg_auth_mode'] == 'auth_sso')) { $write_ldap = true; $write_ldap_success = false; // On tente de créer l'utilisateur sur l'annuaire LDAP $ldap_server = new LDAPServer(); if ($ldap_server->test_user($current_eleve->login)) { // L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas. $write_ldap_success = true; $msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent. Il va néanmoins être créé dans la base Gepi."; } else { $write_ldap_success = $ldap_server->add_user($current_eleve->login, $current_eleve->nom, $current_eleve->prenom, $current_eleve->email, $civilite, '', 'eleve'); } } else { $write_ldap = false; } if (!$write_ldap || ($write_ldap && $write_ldap_success)) { if ($_POST['reg_auth_mode'] == "auth_locale") { $reg_auth = "gepi"; } elseif ($_POST['reg_auth_mode'] == "auth_ldap") {
$reg_login = generate_unique_login($current_parent->nom, $current_parent->prenom, getSettingValue("mode_generation_login_responsable"), getSettingValue("mode_generation_login_responsable_casse")); // generate_unique_login() peut retourner 'false' en cas de pb } if(($reg_login)&&($reg_login!='')) { //check_token(); // Si on a un accès LDAP en écriture, on créé le compte sur le LDAP // On ne procède que si le LDAP est configuré en écriture, qu'on a activé // l'auth LDAP ou SSO, et que c'est un de ces deux modes qui a été choisi pour cet utilisateur. if (LDAPServer::is_setup() && $gepiSettings["ldap_write_access"] == "yes" && ($session_gepi->auth_ldap || $session_gepi->auth_sso) && ($_POST['reg_auth_mode'] == 'auth_ldap' || $_POST['reg_auth_mode'] == 'auth_sso')) { $write_ldap = true; $write_ldap_success = false; // On tente de créer l'utilisateur sur l'annuaire LDAP $ldap_server = new LDAPServer(); if ($ldap_server->test_user($_POST['new_login'])) { // L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas. $write_ldap_success = true; $msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent. Il va néanmoins être créé dans la base Gepi."; } else { $write_ldap_success = $ldap_server->add_user($reg_login, $current_parent->nom, $current_parent->prenom, $current_parent->mel, $current_parent->civilite, '', 'responsable'); } } else { $write_ldap = false; } if (!$write_ldap || ($write_ldap && $write_ldap_success)) { $reg = true; if ($_POST['reg_auth_mode'] == "auth_locale") { $reg_auth = "gepi"; } elseif ($_POST['reg_auth_mode'] == "auth_ldap") {