From 82c7a9fc22252616a62a60ba6bd9bd9028d34fd9 Mon Sep 17 00:00:00 2001 From: Emre KARTAL Date: Thu, 15 Dec 2022 22:42:40 +0100 Subject: [PATCH] Cookie for pagination done (some small issue though) and profile page finished, also I made the views code cleaner --- src/.htaccess | 2 + src/config/Validation.php | 17 ++++-- src/controller/CtrlUtilisateur.php | 28 ++++++++-- src/controller/CtrlVisiteur.php | 66 +++++++++++------------ src/controller/FrontControleur.php | 3 +- src/modele/MdlUtilisateur.php | 35 ++++++++++-- src/modele/MdlVisiteur.php | 9 ++-- src/modele/gateway/ListeGateway.php | 19 ++++--- src/modele/gateway/UtilisateurGateway.php | 7 +++ src/vue/html/PageListePublic.php | 21 ++++---- src/vue/html/inscription.php | 6 +-- src/vue/html/profil.php | 40 ++++++++++++-- 12 files changed, 180 insertions(+), 73 deletions(-) diff --git a/src/.htaccess b/src/.htaccess index 27e9040..c3952df 100755 --- a/src/.htaccess +++ b/src/.htaccess @@ -16,3 +16,5 @@ RewriteRule ^VueListePublic$ index.php?action=redirectionListePublic [L] RewriteRule ^logout$ index.php?action=logout [L] RewriteRule ^MonProfil$ index.php?action=redirectionProfil [L] RewriteRule ^supprimerCompte$ index.php?action=supprimerCompte [L] +RewriteRule ^previousPage$ index.php?action=pagePrécédente [L] +RewriteRule ^nextPage$ index.php?action=pageSuivante [L] \ No newline at end of file diff --git a/src/config/Validation.php b/src/config/Validation.php index c38f0de..a0a06f1 100755 --- a/src/config/Validation.php +++ b/src/config/Validation.php @@ -56,6 +56,15 @@ class Validation { return $str; } + static function cleanPseudo(string &$str) { + $str = preg_replace('/[^A-Za-z\-\^0-9]/', '', $str); + if($str == null || $str == '') + { + return null; + } + return $str; + } + static function cleanMail(string &$str) { $str = preg_replace('/[^A-Za-z\-\^0-9\.\@]/', '', $str); if($str == null || $str == '') @@ -65,16 +74,16 @@ class Validation { return $str; } - static function val_form_add(string &$nom,string &$description,&$dVueEreur) { + static function val_form_add(string &$nom,string &$description,&$dVueErreur) { $nom = Validation::cleanText($nom); if ($nom == NULL) { - $dVueEreur['nom'] = "Veuillez entrer un nom*"; + $dVueErreur['nom'] = "Veuillez entrer un nom*"; } $description = Validation::cleanText($description); if ($description == NULL) { - $dVueEreur['description'] = "Veuillez entrer une description*"; + $dVueErreur['description'] = "Veuillez entrer une description*"; } - if(count($dVueEreur)>0){ + if(count($dVueErreur)>0){ throw new Exception("Problème lors de l'ajout"); } diff --git a/src/controller/CtrlUtilisateur.php b/src/controller/CtrlUtilisateur.php index 9db8492..eab90f0 100755 --- a/src/controller/CtrlUtilisateur.php +++ b/src/controller/CtrlUtilisateur.php @@ -32,23 +32,27 @@ class CtrlUtilisateur { case "supprimerCompte": $this->supprimerCompte($dVueErreur); break; + + case "modifMdp": + $this->changerMotDePasse($dVueErreur); + break; default: $dVueErreur[] = "Erreur d'appel php"; - require ($rep.$vues['home']); + require ($rep.$vues['erreur']); break; } } catch (PDOException $e) { //si erreur BD, pas le cas ici - $dVueEreur[] = "Erreur BD!!! "; + $dVueErreur[] = "Erreur BD!!! "; require ($rep.$vues['erreur']); } catch (Exception $e2) { - $dVueEreur[] = "Erreur inattendue!!! "; + $dVueErreur[] = "Erreur inattendue!!! "; require ($rep.$vues['erreur']); } @@ -76,16 +80,32 @@ class CtrlUtilisateur { global $rep,$vues; $action=NULL; $user=MdlUtilisateur::isConnected(); + $nombreListe=MdlUtilisateur::recupererNombreDeListe(); require ($rep.$vues['profil']); } function supprimerCompte(array $dVueErreur){ global $rep,$vues; $action=NULL; - $user=MdlUtilisateur::suppressionUtilisateur(); + MdlUtilisateur::suppressionUtilisateur(); require ($rep.$vues['login']); } + function changerMotDePasse(array $dVueErreur){ + global $rep,$vues; + try{ + MdlUtilisateur::changerMotDePasse(); + $action=NULL; + require ($rep.$vues['login']); + } + catch(Exception $e) + { + $dVueErreur[] = $e->getMessage(); + require ($rep.$vues['erreur']); + } + + } + }//fin class ?> diff --git a/src/controller/CtrlVisiteur.php b/src/controller/CtrlVisiteur.php index 81f7997..3da5666 100755 --- a/src/controller/CtrlVisiteur.php +++ b/src/controller/CtrlVisiteur.php @@ -50,7 +50,7 @@ class CtrlVisiteur { break; case "AjouterTache": - $this->AjouterTache(); + $this->AjouterTache($dVueErreur); break; case "AjouterListePublic": @@ -58,11 +58,19 @@ class CtrlVisiteur { break; case "ModifierListe": - $this->ModifierListe(); + $this->ModifierListe($dVueErreur); + break; + + case "pagePrécédente": + $this->listePrécédente($dVueErreur); + break; + + case "pageSuivante": + $this->listeSuivante($dVueErreur); break; case "check": - $this->check(); + $this->check($dVueErreur); break; //mauvaise action @@ -145,31 +153,18 @@ class CtrlVisiteur { } function SupprimerTache(array $dVueErreur){ - global $rep,$vues; $tache = MdlVisiteur::SupprimerTache(); - $listes = MdlVisiteur::RecupererListePublic(); - $taches = MdlVisiteur::RecupererTache(); - $action=NULL; - require ($rep.$vues['listPublic']); + $this->ConsulterListePublic($dVueErreur); } function SupprimerListe(array $dVueErreur){ - global $rep,$vues; $liste = MdlVisiteur::SupprimerListe(); - $listes = MdlVisiteur::RecupererListePublic(); - $taches = MdlVisiteur::RecupererTache(); - $action=NULL; - require ($rep.$vues['listPublic']); + $this->ConsulterListePublic($dVueErreur); } - - public function AjouterTache(){ - global $rep,$vues; + public function AjouterTache(array $dVueErreur){ $tache = MdlVisiteur::AjouterTache(); - $listes = MdlVisiteur::RecupererListePublic(); - $taches = MdlVisiteur::RecupererTache(); - $action=NULL; - require ($rep.$vues['listPublic']); + $this->ConsulterListePublic($dVueErreur); } public function AjouterListePublic(array $dVueErreur){ @@ -187,27 +182,32 @@ class CtrlVisiteur { $action=NULL; require ($rep.$vues['listPublic']); } - } - public function ModifierListe(){ - global $rep,$vues; + public function ModifierListe(array $dVueErreur){ $tache = MdlVisiteur::ModifierListe(); - $listes = MdlVisiteur::RecupererListePublic(); - $taches = MdlVisiteur::RecupererTache(); - $action=NULL; - require ($rep.$vues['listPublic']); + $this->ConsulterListePublic($dVueErreur); } - public function check() + public function check(array $dVueErreur) { - global $rep,$vues; $tache = MdlVisiteur::check(); - $listes = MdlVisiteur::RecupererListePublic(); - $taches = MdlVisiteur::RecupererTache(); - $action=NULL; - require ($rep.$vues['listPublic']); + $this->ConsulterListePublic($dVueErreur); + } + + public function listePrécédente(array $dVueErreur){ + if($_COOKIE["page"]>1){ + $_COOKIE["page"]=$_COOKIE["page"]-1; + } + $this->ConsulterListePublic($dVueErreur); } + + public function listeSuivante(array $dVueErreur){ + $_COOKIE["page"]=$_COOKIE["page"]+1; + $this->ConsulterListePublic($dVueErreur); + } + + }//fin class ?> diff --git a/src/controller/FrontControleur.php b/src/controller/FrontControleur.php index d0d446f..e6df67f 100755 --- a/src/controller/FrontControleur.php +++ b/src/controller/FrontControleur.php @@ -4,11 +4,12 @@ class FrontControleur { function __construct(){ global $rep,$vues; session_start(); + setcookie('page', 1, time() + 24*3600); try { $string_actor=' '; $listeActions=array( - 'Utilisateur' => array('logout','redirectionProfil','supprimerCompte'), + 'Utilisateur' => array('logout','redirectionProfil','supprimerCompte','modifMdp'), 'Admin' => array() ); diff --git a/src/modele/MdlUtilisateur.php b/src/modele/MdlUtilisateur.php index 963f054..6c9404d 100755 --- a/src/modele/MdlUtilisateur.php +++ b/src/modele/MdlUtilisateur.php @@ -30,25 +30,54 @@ class MdlUtilisateur $id=Validation::cleanInt($_SESSION['id']); $nom=Validation::cleanString($_SESSION['nom']); $prenom=Validation::cleanString($_SESSION['prenom']); - $pseudo=Validation::cleanString($_SESSION['pseudo']); + $pseudo=Validation::cleanPseudo($_SESSION['pseudo']); $email=Validation::cleanMail($_SESSION['email']); return new Utilisateur($id,$nom,$prenom,$pseudo,$email); } else return null; } - public static function déconnexion(){ session_unset(); session_destroy(); $_SESSION = array(); } + + public static function recupererNombreDeListe(){ + $listeGtw = new ListeGateway(); + $id = Validation::cleanInt($_SESSION['id']); + return $listeGtw->CountListe(intval($id)); + } - public function suppressionUtilisateur(){ + public static function suppressionUtilisateur(){ + $userGtw = new UtilisateurGateway(); $id=Validation::cleanInt($_SESSION['id']); $userGtw->SupprimerUtilisateur(intval($id)); MdlUtilisateur::déconnexion(); } + public static function changerMotDePasse(){ + $userGtw = new UtilisateurGateway(); + $id=Validation::cleanInt($_SESSION['id']); + $mail=Validation::cleanMail($_SESSION['email']); + $mdp=$_POST['passwordCurrent']; + $newMdp=$_POST['newPassword']; + $verif_pass=$userGtw->getCredentials($mail); + if(password_verify($mdp,$verif_pass)){ + if($newMdp == $_POST['confirmNewPassword']){ + if (!preg_match('/^.{5,}$/', $mdp)) { + throw new Exception("Mot de passe trop faible. Veuillez recommencer !"); + } + else { + $userGtw->modifMdp($id, password_hash($newMdp, PASSWORD_DEFAULT)); + } + } + else throw new Exception("Erreur lors de la confirmation du mot de passe."); + } + else throw new Exception("Mot de passe Incorrect"); + + } + + } diff --git a/src/modele/MdlVisiteur.php b/src/modele/MdlVisiteur.php index 523f1ec..5cddafd 100755 --- a/src/modele/MdlVisiteur.php +++ b/src/modele/MdlVisiteur.php @@ -18,7 +18,10 @@ class MdlVisiteur public static function RecupererListePublic(){ $userGtw = new ListeGateway(); - return $userGtw->getListePublic(0,10); + if(isset($_COOKIE["page"])) + return $userGtw->getListePublic(($_COOKIE["page"]-1)*10,10); + else + return $userGtw->getListePublic(1,10); } public static function RecupererTache(){ @@ -66,11 +69,11 @@ class MdlVisiteur } public function AjouterListePublic(&$dVueErreur){ - $taskGtw = new ListeGateway(); + $listGtw = new ListeGateway(); $nom=$_POST['nom-ajout-liste']; $description=$_POST['description-ajout-liste']; Validation::val_form_add($nom,$description,$dVueErreur); - $taskGtw->Ajouter($nom, $description,1, true); + $listGtw->Ajouter($nom, $description,1, true); } public function check(){ diff --git a/src/modele/gateway/ListeGateway.php b/src/modele/gateway/ListeGateway.php index 9d98fc1..c5c12dc 100755 --- a/src/modele/gateway/ListeGateway.php +++ b/src/modele/gateway/ListeGateway.php @@ -10,11 +10,11 @@ class ListeGateway{ public function Ajouter(string $nom, string $description, bool $estPublic, string $createur){ $query='INSERT INTO ToDoList_Liste(nom, description, dateCreation,estPublic, idUtilisateur) VALUES(:nom,:description,CURRENT_DATE, :estPublic, :createur);'; $this->con->executeQuery($query, array( - 'nom' => array($nom, PDO::PARAM_STR), - 'description' => array($description, PDO::PARAM_STR), - 'estPublic' => array($estPublic, PDO::PARAM_INT), - 'createur' => array($createur, PDO::PARAM_STR), - )); + 'nom' => array($nom, PDO::PARAM_STR), + 'description' => array($description, PDO::PARAM_STR), + 'estPublic' => array($estPublic, PDO::PARAM_INT), + 'createur' => array($createur, PDO::PARAM_STR), + )); } public function Editer(string $id, string $nom, string $description){ @@ -26,12 +26,15 @@ class ListeGateway{ ); } + public function CountListe($id){ + $query="SELECT count(*) as nombreListe FROM ToDoList_Liste WHERE idUtilisateur=:id"; + $this->con->executeQuery($query, array('id' => array($id, PDO::PARAM_INT))); + return $this->con->getResults()[0]['nombreListe']; + } + public function EditerNom(string $id, string $nom){ $query='UPDATE ToDoList_Liste SET nom=:nom WHERE id=:id;'; - -// erreur iciiiiiiii $this->con->executeQuery($query, array('nom' => array($nom, PDO::PARAM_STR),'id' => array($id, PDO::PARAM_INT))); - } public function EditerDescription(string $id, string $description){ diff --git a/src/modele/gateway/UtilisateurGateway.php b/src/modele/gateway/UtilisateurGateway.php index 2d74bab..a06733f 100755 --- a/src/modele/gateway/UtilisateurGateway.php +++ b/src/modele/gateway/UtilisateurGateway.php @@ -59,6 +59,13 @@ class UtilisateurGateway{ } } + public function modifMdp($id, $mdp){ + $query = "UPDATE ToDoList_Utilisateur SET motDePasse=:mdp WHERE id=:id"; + $this->con->executeQuery($query, array( + 'mdp' => array($mdp, PDO::PARAM_STR), + 'id' => array($id, PDO::PARAM_INT))); + } + public function RechercheUtilisateurViaEmail(string $mail){ $query = 'SELECT * FROM ToDoList_Utilisateur WHERE email=:mail'; $this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR))); diff --git a/src/vue/html/PageListePublic.php b/src/vue/html/PageListePublic.php index 773485c..89f9b63 100755 --- a/src/vue/html/PageListePublic.php +++ b/src/vue/html/PageListePublic.php @@ -1,7 +1,7 @@ - + Home Page @@ -37,7 +37,7 @@

- + Changer mot de passe - + Supprimer le compte - -