From 1996c6f195961b72ad22c95ad934aff966267452 Mon Sep 17 00:00:00 2001 From: Emre KARTAL Date: Sat, 10 Dec 2022 19:43:53 +0100 Subject: [PATCH] The connection as a user works and also the error management in case of bad password or identifier --- src/.htaccess | 2 +- src/controller/CtrlVisiteur.php | 29 ++++++---- src/controller/FrontControleur.php | 13 ++++- src/modele/MdlUtilisateur.php | 27 +++++---- src/modele/MdlVisiteur.php | 19 ++++--- src/modele/gateway/ListeGateway.php | 9 +-- src/modele/gateway/TacheGateway.php | 6 ++ src/modele/gateway/UtilisateurGateway.php | 29 ++++++---- src/modele/metier/Admin.php | 65 ---------------------- src/modele/metier/Utilisateur.php | 4 +- src/vue/Images/trash.png | Bin 4407 -> 6270 bytes src/vue/css/style.css | 5 +- src/vue/html/NavBar.php | 4 +- src/vue/html/PageListePublic.php | 14 ++--- src/vue/html/erreur.php | 6 +- src/vue/html/login.php | 9 ++- 16 files changed, 108 insertions(+), 133 deletions(-) delete mode 100644 src/modele/metier/Admin.php diff --git a/src/.htaccess b/src/.htaccess index a8b8331..c73690a 100644 --- a/src/.htaccess +++ b/src/.htaccess @@ -12,4 +12,4 @@ RewriteEngine On RewriteRule ^login$ index.php?action=redirectionLogin [L] RewriteRule ^inscription$ index.php?action=redirectionInscription [L] -RewriteRule ^VueListePublic$ index.php?action=redirectionListePublic [L] +RewriteRule ^VueListePublic$ index.php?action=redirectionListePublic [L] \ No newline at end of file diff --git a/src/controller/CtrlVisiteur.php b/src/controller/CtrlVisiteur.php index c642aa3..e9a6c19 100644 --- a/src/controller/CtrlVisiteur.php +++ b/src/controller/CtrlVisiteur.php @@ -59,13 +59,13 @@ class CtrlVisiteur { } catch (PDOException $e) { //si erreur BD, pas le cas ici - $dVueEreur[] = "Erreur BD!!! "; + $dVueEreur[] = "Erreur: Connexion a la base de données impossible! "; require ($rep.$vues['erreur']); } - catch (Exception $e2) + catch (Exception $e) { - $dVueEreur[] = "Erreur inattendue!!! "; + $dVueEreur[] = "Erreur venue de nulle part"; require ($rep.$vues['erreur']); } @@ -98,34 +98,43 @@ class CtrlVisiteur { function seConnecter(array $dVueEreur) { global $rep,$vues; - MdlVisiteur::Connection(); - $action=NULL; - $this->ConsulterListePublic($dVueEreur); + try{ + $result=MdlUtilisateur::Connection(); + $action=NULL; + $this->ConsulterListePublic($dVueEreur); + } + catch (Exception $e) + { + $ErreurLog=$e->getMessage(); + require ($rep.$vues['login']); + } + } function ConsulterListePublic(array $dVueEreur) { global $rep,$vues; $listes = MdlVisiteur::RecupererListePublic(); $taches = MdlVisiteur::RecupererTache(); + $action=NULL; require ($rep.$vues['listPublic']); } function SupprimerTache(){ global $rep,$vues; - $id = $_GET['idTache']; - $tache = MdlVisiteur::SupprimerTache($id); + $tache = MdlVisiteur::SupprimerTache(); $listes = MdlVisiteur::RecupererListePublic(); $taches = MdlVisiteur::RecupererTache(); + $action=NULL; require ($rep.$vues['listPublic']); } function SupprimerListe(){ global $rep,$vues; - $id = $_GET['idListe']; - $liste = MdlVisiteur::SupprimerListe($id); + $liste = MdlVisiteur::SupprimerListe(); $listes = MdlVisiteur::RecupererListePublic(); $taches = MdlVisiteur::RecupererTache(); + $action=NULL; require ($rep.$vues['listPublic']); } diff --git a/src/controller/FrontControleur.php b/src/controller/FrontControleur.php index 3bd8d7b..ffd4492 100644 --- a/src/controller/FrontControleur.php +++ b/src/controller/FrontControleur.php @@ -14,7 +14,7 @@ class FrontControleur { // $action=$_REQUEST['action']; // //On vérifie si l'action fait partie des listes d'actions - // $string_actor=fct($action,$listeActions); + // $string_actor=quelListe($action,$listeActions); // if($string_actor!=NULL){ // $mdl=new mdl.$string_actor; // $actor=$mdl.isMdl; @@ -34,7 +34,16 @@ class FrontControleur { $dVueEreur[] = "Erreur inattendue!!! "; require ($rep.$vues['erreur']); } - } + + public static function quelListe($action,$listeActions){ + foreach($listeActions as $a){ + if(in_array($action, $a)){ + return array_search($a,$listeActions); + } + } + return null; + } + } ?> diff --git a/src/modele/MdlUtilisateur.php b/src/modele/MdlUtilisateur.php index 22d5317..e314da2 100644 --- a/src/modele/MdlUtilisateur.php +++ b/src/modele/MdlUtilisateur.php @@ -7,16 +7,23 @@ class MdlUtilisateur } - public static function CreerUtilisateur(){ - global $dVueEreur; - $userGtw = new UtilisateurGateway(); - // $verif = Validation::val_form_user($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["password-Form"],$_POST["mail-Form"],$dVueEreur); - // if($verif == false){ - // throw new Exception(); - // } - // $hash = password_hash($_POST[password-Form], PASSWORD_DEFAULT); - $userGtw->AjouterUtilisateur($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["mail-Form"],$_POST["password-Form"]); - } + public function connection(){ + $gtw=new UtilisateurGateway(); + $mail=Validation::cleanString($_POST['mail']); + $mdp=Validation::cleanString($_POST['password']); + $verif_pass=$gtw->getCredentials($mail); + if(password_verify($mdp,$verif_pass)){ + $userCurrent=$gtw->RechercheUtilisateurViaEmail($mail); + $_SESSION['role']='user'; + $_SESSION['id']=$userCurrent->getId(); + $_SESSION['nom']=$userCurrent->getNom(); + $_SESSION['prenom']=$userCurrent->getPrenom(); + $_SESSION['pseudo']=$userCurrent->getPseudo(); + $_SESSION['email']=$userCurrent->getMail(); + return $userCurrent; + } + else throw new Exception('Mot de passe incorrect*'); + } public static function RecupererListePublic(){ $userGtw = new ListeGateway(); diff --git a/src/modele/MdlVisiteur.php b/src/modele/MdlVisiteur.php index 158706d..b5a2bdb 100644 --- a/src/modele/MdlVisiteur.php +++ b/src/modele/MdlVisiteur.php @@ -26,20 +26,21 @@ class MdlVisiteur public static function RecupererTache(){ $userGtw = new TacheGateway(); - return $userGtw->getTache(); } - public static function SupprimerTache(string $id){ - $userGtw = new TacheGateway(); - - return $userGtw->Supprimer($id); + public static function SupprimerTache(){ + $userGtw = new TacheGateway(); + $id = $_GET['idTache']; + $userGtw->Supprimer($id); } - public static function SupprimerListe(string $id){ - $userGtw = new ListeGateway(); - - return $userGtw->Supprimer($id); + public static function SupprimerListe(){ + $userGtw = new ListeGateway(); + $taskGtw = new TacheGateway(); + $id = $_GET['idListe']; + $taskGtw->SupprimerViaListe($id); + $userGtw->Supprimer($id); } } diff --git a/src/modele/gateway/ListeGateway.php b/src/modele/gateway/ListeGateway.php index 5e4ec24..17752d3 100644 --- a/src/modele/gateway/ListeGateway.php +++ b/src/modele/gateway/ListeGateway.php @@ -22,7 +22,7 @@ class ListeGateway{ } public function Supprimer(int $id){ - $query='DELETE FROM ToDoList_Liste WHERE id=:id'; + $query="DELETE FROM ToDoList_Liste WHERE id=:id"; $this->con->executeQuery($query,array('id' => array($id, PDO::PARAM_INT))); } @@ -33,13 +33,6 @@ class ListeGateway{ return $listes; } - public function getTacheListe(Liste $liste){ - $query = 'SELECT tache FROM ToDoList_Liste WHERE id=:id '; - $this->con->executeQuery($query, array('id' => array($liste->getId, PDO::PARAM_INT))); - $results=$this->con->getResults(); - return $results; - } - public function getListePublic($offset,$limit){ $query = "SELECT * FROM ToDoList_Liste WHERE estPublic LIMIT $offset, $limit"; $this->con->executeQuery($query); diff --git a/src/modele/gateway/TacheGateway.php b/src/modele/gateway/TacheGateway.php index 1610903..20a7268 100644 --- a/src/modele/gateway/TacheGateway.php +++ b/src/modele/gateway/TacheGateway.php @@ -25,6 +25,12 @@ class TacheGateway{ $this->con->executeQuery($query,array('id' => array($id, PDO::PARAM_INT))); } + // Si une liste est supprimée on supprime toutes ces tâches grâce à cette fonction + public function SupprimerViaListe(string $id){ + $query='DELETE FROM ToDoList_Tache WHERE idListe=:id'; + $this->con->executeQuery($query,array('id' => array($id, PDO::PARAM_INT))); + } + public function getTache(){ $query='SELECT * FROM ToDoList_Tache'; $this->con->executeQuery($query); diff --git a/src/modele/gateway/UtilisateurGateway.php b/src/modele/gateway/UtilisateurGateway.php index 3631a96..42dd98b 100644 --- a/src/modele/gateway/UtilisateurGateway.php +++ b/src/modele/gateway/UtilisateurGateway.php @@ -23,20 +23,27 @@ class UtilisateurGateway{ 'id' => array($id, PDO::PARAM_INT))); } - public getCredential(string $id){ - $query = 'SELECT motDePasse FROM ToDoList_Utilisateur WHERE id=:id'; - - if(this->con->executeQuery($query, array('id' => array($id, PDO::PARAM_INT)))){ - return (this->con->getResults[0]['motDePasse']) - } - else{ - /* pas sur de ça*/ - throw new PDOexception; + public function getCredentials(string $mail){ + $query = 'SELECT motDePasse FROM ToDoList_Utilisateur WHERE email=:mail'; + $this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR))); + $results=$this->con->getResults(); + if($results!=null){ + return $results[0]['motDePasse']; + }else{ + throw new Exception("Identifiant introuvable*"); } + } - public function RechercheUtilisateurViaEmail(string $pseudo){ - + public function RechercheUtilisateurViaEmail(string $mail){ + $query = 'SELECT * FROM ToDoList_Utilisateur WHERE email=:mail'; + $this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_INT))); + $results=$this->con->getResults(); + if($results!=null){ + return new Utilisateur($results[0]['id'],$results[0]['nom'],$results[0]['prenom'],$results[0]['pseudo'],$results[0]['email']); + }else{ + throw new Exception("Identifiant introuvable*"); + } } } ?> \ No newline at end of file diff --git a/src/modele/metier/Admin.php b/src/modele/metier/Admin.php deleted file mode 100644 index 4de71ce..0000000 --- a/src/modele/metier/Admin.php +++ /dev/null @@ -1,65 +0,0 @@ -id = $id; - $this->nom = $nom; - $this->prenom = $prenom; - $this->pseudo = $pseudo; - $this->email = $email; - } - - //Nom - public function getId(){ - return $this->id; - } - - public function setId($id){ - $this->nom = $id; - } - - //Nom - public function getNom(){ - return $this->nom; - } - - public function setNom($nom){ - $this->nom = $nom; - } - - //Prenom - public function getPrenom(){ - return $this->prenom; - } - - public function setPrenom($prenom){ - $this->prenom = $prenom; - } - - //Pseudo - public function getPseudo(){ - return $this->pseudo; - } - - public function setPseudo($pseudo){ - $this->pseudo = $pseudo; - } - - //mail - public function getMail(){ - return $this->email; - } - - public function setEmail($email){ - $this->email = $email; - } - -} -?> \ No newline at end of file diff --git a/src/modele/metier/Utilisateur.php b/src/modele/metier/Utilisateur.php index a526b81..41c9d32 100644 --- a/src/modele/metier/Utilisateur.php +++ b/src/modele/metier/Utilisateur.php @@ -7,15 +7,13 @@ class Utilisateur private $prenom; private $pseudo; private $email; - private $isAdmin; - public function __construct($id, $nom, $prenom, $pseudo, $email, $motDePasse, $isAdmin){ + public function __construct($id, $nom, $prenom, $pseudo, $email){ $this->id = $id; $this->nom = $nom; $this->prenom = $prenom; $this->pseudo = $pseudo; $this->email = $email; - $this->isAdmin = $isAdmin; } //Nom diff --git a/src/vue/Images/trash.png b/src/vue/Images/trash.png index 8d541ad665dc50f2a4a187e0e7e4346ad09d125b..b2c0b0e8ea7c674b9364f77ef77a773fd5fc02c5 100644 GIT binary patch literal 6270 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 literal 4407 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 EZ;Nia{{R30 diff --git a/src/vue/css/style.css b/src/vue/css/style.css index bb3129c..56b4aa6 100644 --- a/src/vue/css/style.css +++ b/src/vue/css/style.css @@ -282,7 +282,10 @@ body::before { transition: background .5s; } - +.ErreurText{ + color: red; + font-size: 0.7rem; +} .button{ border-color: #38b6ff; diff --git a/src/vue/html/NavBar.php b/src/vue/html/NavBar.php index 21c1886..f61673e 100644 --- a/src/vue/html/NavBar.php +++ b/src/vue/html/NavBar.php @@ -17,8 +17,8 @@