/** * Connecte un membre * @param array $param Les attributs pour se connecter * @return object 2 attributs, bool success et string msg * @static */ public static function connexion(&$param) { $std = (object) array('success' => false, 'msg' => array()); if (empty($param['pseudo'])) { $std->msg[] = 'Le pseudo n\'est pas renseigné'; return $std; } elseif (empty($param['password'])) { $std->msg[] = 'Le mot de passe n\'est pas renseigné'; return $std; } $membreDAO = new MembreDAO(BDD::getInstancePDO()); if ($membreDAO->checkUserPass($param['pseudo'], $param['password']) === true) { if (($res = $membreDAO->connexion($param['pseudo'])) !== false) { if (!$res->bloquer) { $_SESSION['user'] = $res; // Récupère les doits du groupe du membre $droitGroupeDAO = new DroitGroupeDAO(BDD::getInstancePDO()); $_SESSION['droits']['groupe'] = $droitGroupeDAO->getAllForOneGroupeTree($_SESSION['user']->id_groupe); // Récupère les doits du membre $droitMembreDAO = new DroitMembreDAO(BDD::getInstancePDO()); $_SESSION['droits']['membre'] = $droitMembreDAO->getAllForOneMembre($_SESSION['user']->id_membre); $jeton = ''; if (isset($param['autoConnexion']) && $param['autoConnexion'] == 'on') { Token::createToken(); $jeton = ' avec jeton'; } $actionDAO = new ActionDAO(BDD::getInstancePDO()); $action = new Action(array('id_action' => DAO::UNKNOWN_ID, 'libelle' => "Connexion{$jeton} ({$_SERVER['REMOTE_ADDR']})", 'id_membre' => $_SESSION['user']->id_membre)); $actionDAO->save($action); $std->success = true; return $std; } else { $std->msg[] = 'Votre compte a été bloqué'; } } else { $std->msg[] = 'Erreur BDD'; } } else { $std->msg[] = 'Couple login / mot de passe incorrect'; } return $std; }
require 'Autoloader.php'; Autoloader::Autoload(); // Démarre une session session_start(); // Connecte le client s'il possède un cookie $tokenDAO = new TokenDAO(BDD::getInstancePDO()); if (!isset($_SESSION['user'])) { $tokenDAO->checkToken(); } // Si le client n'est pas connecté if ($_SESSION['user'] === false) { // Récupère l'id du groupe Visiteur $groupeDAO = new GroupeDAO(BDD::getInstancePDO()); $groupe = $groupeDAO->getOneByLibelle('Visiteur'); // Récupère les doits du groupe Visiteur $droitGroupeDAO = new DroitGroupeDAO(BDD::getInstancePDO()); $_SESSION['droits']['groupe'] = $droitGroupeDAO->getAllForOneGroupeTree($groupe->id_groupe); $_SESSION['droits']['membre'] = array(); } // Créé le jeton pour éviter la faille CSRF if (empty($_SESSION['jetonCSRF'])) { $_SESSION['jetonCSRF'] = hash('sha1', uniqid(rand(), true) . SALT_JETON_CSRF); } // Enregistre la visite si c'est la premiere de cette heure $visite = new Visite(array('id_visite' => DAO::UNKNOWN_ID, 'ip' => $_SERVER['REMOTE_ADDR'])); $visite->checkVisite($visite); // Récupération de l'URL $controleur = !empty($_GET['url_controleur']) ? ucfirst($_GET['url_controleur']) : 'Main'; $page = !empty($_GET['url_page']) ? $_GET['url_page'] : 'accueil'; $action = !empty($_GET['url_action']) ? $_GET['url_action'] : 'get'; $id = !empty($_GET['url_id']) ? $_GET['url_id'] : NULL;
/** * Vérifie si un cookie de connexion est présent et est valide * Si oui remplie la variable de session avec un Membre, sinon session = False et destruction cookie */ public function checkToken() { if (!empty($_COOKIE['token'])) { $req = $this->pdo->prepare('SELECT id_membre FROM token T WHERE cle = :token AND date_expiration > NOW() AND actif = 1'); $req->execute(array('token' => $_COOKIE['token'])); if ($res = $req->fetch()) { $membreDAO = new MembreDAO(BDD::getInstancePDO()); $_SESSION['user'] = $membreDAO->getOne($res->id_membre); // Récupère les doits du groupe du membre $droitGroupeDAO = new DroitGroupeDAO(BDD::getInstancePDO()); $_SESSION['droits']['groupe'] = $droitGroupeDAO->getAllForOneGroupeTree($_SESSION['user']->id_groupe); // Récupère les doits du membre $droitMembreDAO = new DroitMembreDAO(BDD::getInstancePDO()); $_SESSION['droits']['membre'] = $droitMembreDAO->getAllForOneMembre($_SESSION['user']->id_membre); return; } } setcookie('token', '', time()); $_SESSION['user'] = false; }