Subversion Repositories eFlore/Applications.del

Rev

Rev 1610 | Rev 1666 | Go to most recent revision | 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' => '',
                        '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 id_utilisateur, nom, prenom, courriel, mot_de_passe FROM del_utilisateur AS du '.
                        '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 id_utilisateur, nom, prenom, courriel, mot_de_passe FROM del_utilisateur AS du '.
                        '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']);
        }
}
?>