Subversion Repositories eFlore/Applications.del

Rev

Rev 1666 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
class GestionUtilisateur {

        private $conteneur;
        private $gestionBdd;
        private $bdd;

        public function __construct(Conteneur $conteneur = null) {
                $this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
                $this->conteneur->chargerConfiguration('config_utilisateurs.ini');
                $this->gestionBdd = $conteneur->getGestionBdd();
                $this->bdd = $this->gestionBdd->getBdd();
                $this->demarrerSession();
        }

        private function demarrerSession() {
                if(session_id() == '') {
                        // modifier ce test lors du passage en php 5.4
                        session_start();
                }
        }

        protected function getUtilisateurAnonyme() {
                return array('connecte' => false,
                        'id_utilisateur' => session_id(),
                        'courriel' => '',
                        'mot_de_passe' => '',
                        'nom' => '',
                        'prenom' => '',
                        'admin' => '0',
                        'session_id' => session_id()
                );
        }

        protected function utilisateurEstIdentifie() {
                $utilisateur = null;
                $utilisateur = $this->utilisateurEstIdentifieCookie();
                if ($utilisateur != null) {
                        $utilisateur['session_id'] = session_id();
                }
                return $utilisateur;
        }

        protected function utilisateurEstIdentifieCookie() {
                $retour = null;
                if (isset($_COOKIE['del_courriel']) && isset($_COOKIE['del_mot_de_passe'])) {
                        $retour = $this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE['del_courriel'], $_COOKIE['del_mot_de_passe']);
                }
                return $retour;
        }

        protected function identifierUtilisateur($login, $motDePasse) {
                $requete = 'SELECT du.id_utilisateur, nom, prenom, courriel, mot_de_passe, dui.admin '.
                        'FROM del_utilisateur AS du '.
                        '       LEFT JOIN del_utilisateur_infos AS dui ON (du.id_utilisateur = dui.id_utilisateur) '.
                        'WHERE courriel = '.$this->bdd->proteger($login).' '.
                        'AND mot_de_passe = MD5('.$this->bdd->proteger($motDePasse).')';
                $utilisateur = $this->bdd->recupererTous($requete);
                return $utilisateur;
        }

        protected function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe) {
                $requete = 'SELECT du.id_utilisateur, nom, prenom, courriel, mot_de_passe, dui.admin '.
                        'FROM del_utilisateur AS du '.
                        '       LEFT JOIN del_utilisateur_infos AS dui ON (du.id_utilisateur = dui.id_utilisateur) '.
                        'WHERE courriel = '.$this->bdd->proteger($login).' '.
                        'AND mot_de_passe = '.$this->bdd->proteger($mot_de_passe);
                $utilisateur = $this->bdd->recuperer($requete);
                return $utilisateur;
        }

        protected function setUtilisateur($utilisateur) {
                $utilisateur['session_id'] = session_id();
                $utilisateur['connecte'] = true;
                $this->setPersistentCookie('del_courriel', $utilisateur['courriel'], 1);
                $this->setPersistentCookie('del_mot_de_passe', $utilisateur['mot_de_passe'], 1);
                return $utilisateur;
        }

        protected function setPersistentCookie($name, $value, $remember = 1) {
                setcookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/');
        }

        protected function oublierUtilisateur() {
                setcookie('del_courriel', $_COOKIE['del_courriel'], time()-3600, '/');
                setcookie('del_mot_de_passe', $_COOKIE['del_mot_de_passe'], time()-3600, '/');
                unset($_COOKIE['del_courriel']);
                unset($_COOKIE['del_mot_de_passe']);
        }
}
?>