if ($ds == "error_2") { returnmsg('danger', 'Test de connexion à l\'annuaire : ', $failed, 'Impossible d\'utiliser TLS'); } else { if ($ds == "error_3") { returnmsg('danger', 'Test de connexion à l\'annuaire : ', $failed, 'Connexion établie mais l\'identification auprès du serveur a échoué'); } else { if ($ds == "error_4") { returnmsg('danger', 'Test de connexion à l\'annuaire : ', $failed, 'Impossible d\'établir la connexion'); } else { if (!$ds) { echo encode_message_utf8($failed) . "</h3></div>"; } else { returnmsg('success', 'Test de connexion à l\'annuaire : ', $ok, ''); //echo encode_message_utf8("<h3>Test de recherche sur l'annuaire avec le chemin spécifié : "); $result = ""; $result = grr_ldap_search_user($ds, $ldap_base, "objectClass", "*", $ldap_filter, "y"); if ($result == "error_1") { $test_chemin = 'failed'; if ($ldap_filter == "") { returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin que vous avez choisi <b>ne semble pas valide</b>.'); } else { returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin et/ou le filtre additionnel que vous avez choisi <b>ne semblent pas valides</b>.'); } } else { if ($result == "error_2") { $test_chemin = 'failed'; if ($ldap_filter == "") { returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin que vous avez choisi semble valide mais la recherche sur ce chemin ne renvoie aucun résultat.'); } else { returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin et le filtre additionnel que vous avez choisi semblent valides mais la recherche sur ce chemin ne renvoie aucun résultat.'); }
function grr_verif_ldap($_login, $_password) { global $ldap_filter; if ($_password == '') { return false; } include "config_ldap.inc.php"; $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $ldap_login, $ldap_pwd, $use_tls); // Test with login and password of the user if (!$ds) { $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $_login, $_password, $use_tls); } if ($ds) { // Attributs testés pour egalite avec le login $atts = explode("|", Settings::get("ldap_champ_recherche")); //$atts = array('uid', 'login', 'userid', 'cn', 'sn', 'samaccountname', 'userprincipalname'); //$login_search = ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login); $login_search = preg_replace("/[^\\-@._[:space:]a-zA-Z0-9]/", "", $_login); // Tenter une recherche pour essayer de retrouver le DN reset($atts); while (list(, $att) = each($atts)) { $dn = grr_ldap_search_user($ds, $ldap_base, $att, $login_search, $ldap_filter); if ($dn == "error_1" or $dn == "error_2" or $dn == "error_3") { return $dn; } else { if ($dn) { // on a le dn if (@ldap_bind($ds, $dn, $_password)) { @ldap_unbind($ds); return $dn; } } } } // Si echec, essayer de deviner le DN, dans le cas où il n'y a pas de filtre supplémentaires reset($atts); if (!isset($ldap_filter) or $ldap_filter = "") { while (list(, $att) = each($atts)) { $dn = $att . "=" . $login_search . "," . $ldap_base; if (@ldap_bind($ds, $dn, $_password)) { @ldap_unbind($ds); return $dn; } } } return false; } else { return false; } }