private function authenticate_ldap($_login,$_password) { if ($_login == null || $_password == null) { return false; exit(); } $ldap_server = new LDAPServer; if ($ldap_server->authenticate_user($_login,$_password)) { $this->login = $_login; $this->current_auth_mode = "ldap"; return true; } else { return false; } }
// On commence par récupérer quelques infos. $req = mysqli_query($GLOBALS["mysqli"], "SELECT password, auth_mode FROM utilisateurs WHERE (login = '******')"); $old_password = old_mysql_result($req, 0, "password"); $user_auth_mode = old_mysql_result($req, 0, "auth_mode"); if ($no_anti_inject_password_a != '') { // Modification du mot de passe if ($no_anti_inject_password1 == $reg_password2) { // On a bien un mot de passe et sa confirmation qui correspond if ($user_auth_mode != "gepi" && $gepiSettings['ldap_write_access'] == "yes") { // On est en mode d'écriture LDAP. // On tente un bind pour tester le nouveau mot de passe, et s'assurer qu'il // est différent de celui actuellement utilisé : $ldap_server = new LDAPServer; $test_bind_nouveau = $ldap_server->authenticate_user($session_gepi->login, $no_anti_inject_password1); // On teste aussi l'ancien mot de passe. $test_bind_ancien = $ldap_server->authenticate_user($session_gepi->login, $no_anti_inject_password_a); if (!$test_bind_ancien) { // L'ancien mot de passe n'est pas correct $msg = "L'ancien mot de passe n'est pas correct !"; } elseif ($test_bind_nouveau) { // Le nouveau mot de passe est le même que l'ancien $msg = "ERREUR : Vous devez choisir un nouveau mot de passe différent de l'ancien."; } else { // C'est bon, on enregistre $write_ldap_success = $ldap_server->update_user($session_gepi->login, '', '', '', '', $no_anti_inject_password1,''); if ($write_ldap_success) { $msg = "Le mot de passe a ete modifié !";