====== authentification ldap ====== Bon l'idée est d'interroger le ldap à la connexion et si la personne existe dans le ldap de créer localement l'utilisateur. C'est d'ailleurs ce que propose la doc officiel dotclear http://fr.dotclear.org/documentation/2.0/resources/authentication pour cela nous allons redeclarer la class DcAuth dans le fichier dotclear/inc/config.php // Ajout du la classe pour le ldap $__autoload['myDcAuth'] = dirname(__FILE__).'/class.auth.ldap.php'; define('DC_AUTH_CLASS','myDcAuth'); ensuite dans notre fichier dotclear/inc/class.auth.ldap.php con->begin(); $cur = $this->con->openCursor($this->user_table); # parmetre de configuration pour l'interface PHP pour administrer # notre annuaire LDAP $server = "X.X.X.X"; $port = "389"; $racine = "dc=XXX,dc=XXX"; #connection au serveur ldap $ds=@ldap_connect($server) or die("Could not connect to LDAP server."); ldap_set_option ($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if (ldap_bind($ds,"uid=".$user_id.",ou=Users,dc=XXX,dc=XXX",$pwd)) { # On définit le mot de passe, il est inséré dans tous les cas. $cur->user_pwd = $pwd; # Si l'utilisateur existe, nous allons uniquement mettre à jour # son mot de passe dans la table utilisateur de Dotclear. if ($this->core->userExists($user_id)) { $this->sudo(array($this->core,'updUser'),$user_id,$cur); $this->con->commit(); } # Si l'utilisateur n'existe pas, nous allons le créer. # Afin qu'il puisse se connecter, il est nécessaire de lui donner # au moins une permission "admin" sur son blog . else { # Si l'utilisateur n'existe pas, nous allons le créer. # Afin qu'il puisse se connecter, il est nécessaire de lui donner # au moins une permission "usage" sur le blog "default". else { $sr=ldap_search($ds,$racine,"cn=$user_id",array( "dn", "cn", "sn", "mail", "givenName")); $info = ldap_get_entries($ds, $sr); #on recherche l'utilisateur dans le ldap pour recuperer toutes les informations $sr=ldap_search($ds,$racine,"cn=$user_id",array( "dn", "cn", "sn", "mail", "givenName")); $info = ldap_get_entries($ds, $sr); #si le ldap ne ramene qu'un seul utilisateur if ($info["count"] ==1) { $cur->user_id = $info[0]['cn'][0]; $cur->user_email = $info[0]['mail'][0]; $cur->user_name = $info[0]['givenName'][0]; $cur->user_firstname = $info[0]['sn'][0]; $cur->user_lang = 'fr'; $cur->user_tz = 'Europe/Paris'; $cur->user_default_blog = 'default'; $this->sudo(array($this->core,'addUser'),$cur); $this->sudo(array($this->core,'setUserBlogPermissions'),$user_id,$user_id,array('admin'=>true)); $this->con->commit(); } } # Les opérations précédentes se sont déroulées sans erreur, nous # pouvons maintenant appeler la méthode parente afin d'initialiser # l'utilisateur dans l'object $core->auth return parent::checkUser($user_id,$pwd); } # En cas d'erreur on annule la transaction et on renvoie "false" $this->con->rollback(); return false; } } ?> et voila notre blog utilise le ldap