« Commandes LDAP avec PHP » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
(Page créée avec « == Rechercher un utilisateur dans l'annuaire == La fonction attend les informations suivantes : * '''Nom''' de la personne recherchée. * '''Prénom''' de la personne recherchée. La fonction retournera le résultats suivant en fonction des conditions suivantes : * '''L'utilisateur a été trouvé :''' retourne un tableau avec les informations de l'utilisateur. * '''L'utilisateur n'a pas été trouvé :''' retourne le code d'erreur 404. * '''La requête n'a pas... »)
(Aucune différence)

Version du 8 avril 2025 à 16:11

Rechercher un utilisateur dans l'annuaire

La fonction attend les informations suivantes :

  • Nom de la personne recherchée.
  • Prénom de la personne recherchée.

La fonction retournera le résultats suivant en fonction des conditions suivantes :

  • L'utilisateur a été trouvé : retourne un tableau avec les informations de l'utilisateur.
  • L'utilisateur n'a pas été trouvé : retourne le code d'erreur 404.
  • La requête n'a pas aboutie (serveur indisponible ou requête interdite) : retourne le code d'erreur 403.
<?php

# CONFIG. CONNECTEUR AD
# ------------------------------
# À renseigner

# Domaine ActiveDirectory
define("LDAP_DOMAIN","ncad.fr");

# Serveur ActiveDirectory
define("LDAP_SERVER_NAME","ldaps://".LDAP_DOMAIN);

# Compte AD utilisé pour exécuter la commande
define("LDAP_SERVER_LOGIN","JOB0001-NCAD");

# Mot de passe du compte AD
define("LDAP_SERVER_PASSWORD","M0n#P45-sW0rDSuQ3Rc0pl!qu3");

# OU recherche comptes utilisateurs
define("LDAP_DN","OU=FIGEAC,DC=ncad,DC=fr");

# FONCTION ldap_search_user
# ------------------------------
 
function ldap_search_user($firstname, $lastname)
{

	if ($ldap_connection=@ldap_connect(LDAP_SERVER_NAME)) {
		$ldapBind = ldap_bind($ldap_connection,LDAP_SERVER_LOGIN."@".LDAP_DOMAIN,LDAP_SERVER_PASSWORD);
		ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
		ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search.
		$ldap_base_dn = LDAP_DN;
		$search_filter = "(&(sn=$firstname)(givenname=$lastname))";
		$attributes = array();
		$attributes[] = 'givenname';
		$attributes[] = 'mail';
		$attributes[] = 'samaccountname';
		$attributes[] = 'sn';
		$attributes[] = 'department';
		$result = ldap_search($ldap_connection, $ldap_base_dn, $search_filter, $attributes);
		if (FALSE !== $result){
			$entries = ldap_get_entries($ldap_connection, $result);
			if ($entries['count'] >= 1) {
				$result = $entries;
			} else {
				$result = "404";
			}
		} else {
			$result = "403";
		}
		ldap_unbind($ldap_connection); // Clean up after ourselves.		
	} else {
		$result = "403";
	}
	return $result;
}

# TEST DE LA FONCTION
# ------------------------------
 
$ldap_search_result = ldap_search_user(
	"CACHELOU",
	"Nicolas"
);

print_r($ldap_search_result);

?>