Outils pour utilisateurs

Outils du site


braveo:dcldapauth

Dotclear: Authentification LDAP

<?php
//On inclut le fichier qui contient la classe LDAP
include_once "../../lib/ldap.class.php";
class myDcAuth extends dcAuth{
    //On autorise l'utilisateur a changer son mot de passe
    protected $allow_pass_change = true;
    //Authentification et crétion d'ulisateur
    public function checkUser($userId, $passwd=null, $userKey=null){
        //On verie si un mot de passe a bien été saisie
        if ($passwd == NULL) {
            //Si non, on appel la méthode parente checkUser
            return parent::checkUser($userId,null,$userKey);
        }else{
            //Si oui, on instantie les systèmes Dotclear
            $this->con->begin();
            //Ou ouvre la table qui contient les utilisateur Dotclear
            $cur = $this->con->openCursor($this->user_table);
            //On vérifie si les identifiant sont bon
            if (ldap::userBind($userId, $passwd)){
                //Si oui, on met a jour le mot de passe
                $cur->user_pwd = $passwd;
                //On verifie que l'utilisateur existe dans la base Dotclear
                if ($this->core->userExists($userId)){
                    //Si oui, on met ajour le mot de passe
                    $this->sudo(array($this->core, "updUser"),$userId,$cur);
                    $this->con->commit();
                }else{
                    //Si non, on récupère les information le concernant dans le LDAP
                    $userInfo = ldap::getUserInfo($userId);
                    //On met a jour le cache de Dotclear
                    $cur->user_id = $userInfo["cn"];
                    $cur->user_email = $userInfo["mail"];
                    $cur->user_name = $userInfo["givenName"];
                    $cur->user_firstname = $userInfo["sn"];
                    $cur->user_lang = "fr";
                    $cur->user_tz = "Europe/Paris";
                    $cur->user_default_blog = "default";
                    //On ajoute l'utilisateur dans la base Dotclear
                    $this->sudo(array($this->core,'addUser'), $cur);
                    $this->sudo(array($this->core,'setUserBlogPermissions'), $userId, $userId, array('admin'=>true));
                    $this->con->commit();
                    return parent::checkUser($userId,$passwd);
                }
            }else{
                //Si les identifiant ne sont pas valides, on annule la procédure
                $this->con->rollback();
                //Et on retourne flase
                return false;
            }
        }
    }
}
?>
braveo/dcldapauth.txt · Dernière modification: 2016/07/19 15:36 (modification externe)