Attention : LDAP n'est pas utilisable par défaut avec EasyPHP; il faut ajouter l'extension php_ldap.
Cliquer avec le bouton droit sur l'icone de EasyPHP dans la barre de tâches et choisir l'item :
Configuration->Extensions PHP
Cocher la boîte à
cocher "php_ldap" puis
cliquer sur le bouton "Appliquer".
Redémarrer EasyPHP.
Le contrôle d'accès doit interroger l'annuaire LDAP. Pour cela, nous allons définir une classe LDAPLoginController et l'utiliser en récrivant le contenu du fichier login/loginAccess.conf.php :
<?php
// Changer ces 2 lignes pour utiliser un validateur de login
différent
include_once 'LDAPLoginController.class.php';
$loginControl = new LDAPLoginController();
?>
Créer le fichier login/LDAPLoginController.class.php définissant la classe LDAPLoginController :
<?php
include_once ('AbstractLoginController.class.php');
include_once ('ldap.cnam.conf.php'); // définit
$GLOBALS['LDAP_HOST']
class LDAPLoginController extends AbstractLoginController {
function isValidLogin($login) {
return
true; // test impossible avec LDAP!?
}
function isValidPassword($login,
$password, & $errorMessage) {
return
$this->search($login, $password, $errorMessage);
}
// ...
Cette classe définit une méthode search qui interroge l'annuaire LDAP recensant le personnel du CNAM ($ldap_base = "ou=People,o=personnel,dc=cnam,dc=fr"); search utilise les fonctions ldap_connect, ldap_bind et ldap_close :
/*
private */
function search($user, $pwd, &
$errorMessage) {
$errorMessage = '';
$ds =
ldap_connect($GLOBALS['LDAP_HOST']);
if ($ds) {
$ldap_base =
"ou=People,o=personnel,dc=cnam,dc=fr";
$dn = "uid=" . $user . "," .
$ldap_base;
$r = @ ldap_bind($ds, $dn,
$pwd);
ldap_close($ds);
return $r;
} else {
$errorMessage = "Impossible de
se connecter au serveur LDAP {$GLOBALS['LDAP_HOST']}";
die($errorMessage);
}
return
false;
}
}
?>
Tester avec cette page d'exemple .