public function membres($action, $id, $vars) { switch ($action) { /**** GET ****/ case 'get': $vars['titrePage'] = 'Les membres'; // <h1> de la page $membreDAO = new MembreDAO(BDD::getInstancePDO()); $vars['membres'] = $membreDAO->getAllForTable(); $this->vue->display('admin/membres_get_all.twig', $vars); exit; /**** EDIT ****/ /**** EDIT ****/ case 'edit': $vars['titrePage'] = 'Modification d\'un membre'; // <h1> de la page $membreDAO = new MembreDAO(BDD::getInstancePDO()); $vars['membre'] = $membreDAO->getOne($id); $groupeDAO = new GroupeDAO(BDD::getInstancePDO()); $vars['groupes'] = $groupeDAO->getAll(); // Si un formulaire a été envoyé if (!empty($_POST)) { // Si le formulaire est valide au niveau faille CSRF if (!empty($_POST['jetonCSRF']) && $_POST['jetonCSRF'] == $_SESSION['jetonCSRF']) { // On essaye de faire les modifications $res = Membre::edit($_POST, $id); if ($res->success) { $res->redirect = '/admin/membres'; } echo json_encode($res); exit; } } $this->vue->display('admin/membre_edit.twig', $vars); exit; /**** DROP ****/ /**** DROP ****/ case 'drop': if (!empty($_POST)) { // Si le formulaire est valide au niveau faille CSRF if (!empty($_POST['jetonCSRF']) && $_POST['jetonCSRF'] == $_SESSION['jetonCSRF']) { echo json_encode(Membre::delete($id)); } } exit; default: $this->vue->display('404.twig', $vars); exit; } }
foreach ($badAgents as $agent) { if (strpos($_SERVER['HTTP_USER_AGENT'], $agent) !== false) { $bot = true; } } session_start(); header("HTTP/1.1 200 OK"); if (isset($_SESSION['login']) && $_SESSION['login'] != '') { header('Location: index.php'); } if (isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) { include_once 'SPDO.class.php'; include 'conf.inc.php'; include MODELS_INC . 'MembreDAO.php'; //include_once('includes/passwordHash.inc.php'); $user = MembreDAO::getByLogin($_POST['login']); if ($user != NULL) { if (empty($user) || $_POST['password'] != $user->getPassword()) { $badinput = true; sleep(1); } else { session_start(); $_SESSION['login'] = $user; session_start(); header('Location: index.php'); exit; } } else { $badinput = true; } }
/** * Vérifie que le mot de passe peut etre modifié par oublie * @param array $param Les attributs de la demande de réinitialisation du mot de passe * @return object 2 attributs, bool success et array string msg * @static */ public static function sendMailLostPass(&$param) { $resCheck = self::checkSendMailLostPass($param); $res = $resCheck; if (!isset($resCheck->success)) { $membreRes = $resCheck; $cle = hash('sha256', uniqid(rand(), true) . SALT_RESET_PASS); $membreDAO = new MembreDAO(BDD::getInstancePDO()); $membre = new membre(array('id_membre' => $membreRes->id_membre, 'cle_reset_pass' => $cle)); if (($resSave = $membreDAO->save($membre)) !== false) { $param = array('pseudo' => $membreRes->pseudo, 'sujet' => 'Oubli de mot de passe', 'cle' => $cle); $mail = new Mail($membreRes->email, '[Technote] Oubli de mot de passe', 'mail_lostPass.twig', $param); $resMail = $mail->sendMail(); $res = $resMail; if ($resMail->success === true) { $actionDAO = new ActionDAO(BDD::getInstancePDO()); $action = new Action(array('id_action' => DAO::UNKNOWN_ID, 'libelle' => 'Oubli de mot de passe (création de la clé)', 'id_membre' => $membreRes->id_membre)); $actionDAO->save($action); $res->success = true; $res->msg[0] = 'Un email vous a été envoyé, merci de suivre les instructions'; } } else { $res->success = false; $res->msg[] = 'Erreur BDD'; } } return $res; }
public static function recherche(&$param, $page) { $std = (object) array('success' => false, 'msg' => array()); $cond = array(); $strPagination = ''; // On construit l'URL pour la pagination, et on construit un tableau pour la requête SQL if (!empty($param['titre'])) { $cond['titre'] = $param['titre']; $strPagination .= '&titre=' . urlencode($param['titre']); } if (!empty($param['date_debut'])) { if (($res = Date::verifierDate($param['date_debut'])) !== true) { $std->msg[] = $res . ' (date de début)'; } else { $cond['date_debut'] = $param['date_debut']; $strPagination .= '&date_debut=' . $param['date_debut']; } } if (!empty($param['date_fin'])) { if (($res = Date::verifierDate($param['date_fin'])) !== true) { $std->msg[] = $res . ' (date de fin)'; } else { $cond['date_fin'] = $param['date_fin']; $strPagination .= '&date_fin=' . $param['date_fin']; } } if (!empty($param['auteur'])) { $membreDAO = new MembreDAO(BDD::getInstancePDO()); if (($res = $membreDAO->checkPseudoExiste($param['auteur'])) === false) { $std->msg[] = 'Aucun membre avec ce pseudo'; } else { $cond['auteur'] = $param['auteur']; $strPagination .= '&auteur=' . $param['auteur']; } } if (!empty($param['mots_cles'])) { // Construit un tableau de mots clés $tabMC = explode(',', $param['mots_cles']); $tabMCClean = array(); foreach ($tabMC as $key => $value) { // On enlève les espaces de début et de fin $valueClean = trim($value); if ($valueClean != '') { $tabMCClean[] = $valueClean; // Si le mot clé est obligatoire, on supprime le + de début if ($valueClean[0] == '+') { $valueClean = substr($valueClean, 1); } if (($res = MotCle::checkExisteByLabel($valueClean)) !== true) { $std->msg[] = $res; } } } $cond['mots_cles'] = $tabMCClean; } // S'il y a des erreurs, on s'arrête if (!empty($std->msg)) { return $std; } $technoteDAO = new TechnoteDAO(BDD::getInstancePDO()); // On récupère le nombre de technotes qu'on a en résultat $count = $technoteDAO->getTechnotesWithSearch(NB_TECHNOTES_PAGE, $cond, true); // On créé la pagination $std->pagination = new Pagination($page, $count, NB_TECHNOTES_PAGE, '/technotes?recherche=' . $strPagination . '&page='); // On récupère les technotes $std->technotes = $technoteDAO->getTechnotesWithSearch(NB_TECHNOTES_PAGE, $cond, false, $std->pagination->debut); if (empty($std->technotes)) { $std->msg[] = 'Aucune technote avec ces critères'; } else { $std->success = true; } return $std; }
/** * 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; }
public function autocomplete($action, $id, $vars) { switch ($action) { case 'get': if (!empty($_GET['type']) && !empty($_GET['term'])) { $res = NULL; if ($_GET['type'] == 'motcle') { $motCleDAO = new MotCleDAO(BDD::getInstancePDO()); $res = $motCleDAO->getAllComposedOf($_GET['term']); } elseif ($_GET['type'] == 'membre') { $membreDAO = new MembreDAO(BDD::getInstancePDO()); $res = $membreDAO->getAllComposedOf($_GET['term']); } elseif ($_GET['type'] == 'titreTechnote') { $technoteDAO = new TechnoteDAO(BDD::getInstancePDO()); $res = $technoteDAO->getAllTitreComposedOf($_GET['term']); } elseif ($_GET['type'] == 'titreQuestion') { $questionDAO = new QuestionDAO(BDD::getInstancePDO()); $res = $questionDAO->getAllTitreComposedOf($_GET['term']); } echo json_encode($res); exit; } $this->vue->display('404.twig', $vars); exit; default: $this->vue->display('404.twig', $vars); exit; } }