コード例 #1
0
ファイル: Admin.php プロジェクト: alexdu98/technote
 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;
     }
 }
コード例 #2
0
ファイル: connection.php プロジェクト: WilBenShu/LPSil
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;
    }
}
コード例 #3
0
ファイル: Membre.php プロジェクト: alexdu98/technote
 /**
  * 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;
 }
コード例 #4
0
ファイル: Technote.php プロジェクト: alexdu98/technote
 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;
 }
コード例 #5
0
ファイル: TokenDAO.php プロジェクト: alexdu98/technote
    /**
     * 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;
    }
コード例 #6
0
ファイル: Main.php プロジェクト: alexdu98/technote
 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;
     }
 }