From bef27714ca1515872af3bd3d03a828459fae42b3 Mon Sep 17 00:00:00 2001 From: Emre KARTAL Date: Tue, 13 Dec 2022 21:50:21 +0100 Subject: [PATCH] Management of errors during registration (unique nickname, unique email, verification of special characters, size of name and first name more than 3 letters...) --- src/config/Validation.php | 73 +++++++------- src/controller/CtrlVisiteur.php | 10 +- src/modele/MdlVisiteur.php | 11 +-- src/modele/gateway/UtilisateurGateway.php | 28 +++++- src/vue/css/style.css | 4 + src/vue/html/NavBar.php | 2 +- src/vue/html/PageListePublic.php | 5 +- src/vue/html/inscription.php | 111 +++++++++++++--------- src/vue/html/login.php | 17 ++-- 9 files changed, 154 insertions(+), 107 deletions(-) diff --git a/src/config/Validation.php b/src/config/Validation.php index 5e9da10..ee64e31 100755 --- a/src/config/Validation.php +++ b/src/config/Validation.php @@ -2,54 +2,47 @@ class Validation { - static function val_form_user(string &$nom, string &$prenom, string &$pseudo, string &$mdp, string &$email, &$dVueEreur) { + static function val_form_user(string &$nom, string &$prenom, string &$pseudo, string &$mdp, string &$email, &$dVueErreur) { //Vérification Nom - $nom = Validation::cleanString($nom); + $nom = Validation::val_string($nom); if ($nom == NULL) { - $dVueEreur[] = "Veuillez revoir le nom*"; + $dVueErreur['nom'] = "Le nom ne peut pas comporter de caractère spécial*"; + }else if(strlen($nom)<3){ + $dVueErreur['nom'] = "Le nom doit comporter au moins 3 caractères*"; } //Vérification Prenom - $prenom = Validation::cleanString($prenom); + $prenom = Validation::val_string($prenom); if ($prenom == NULL) { - $dVueEreur[] = "Veuillez revoir le prenom*"; + $dVueErreur['prenom'] = "Le prenom ne peut pas comporter de caractère spécial*"; + }else if(strlen($prenom)<3){ + $dVueErreur['prenom'] = "Le prenom doit comporter au moins 3 caractères*"; } - // //Vérification Email - // $prenom = val_mail($prenom,$dVueEreurdVue); - // if ($prenom == NULL) { - // $dVueEreur[] = "Veuillez revoir le mail*"; - // } - - // //Vérification Pseudo - // if (!isset($pseudo)||$pseudo=="") { - // $dVueEreur[] = "pas de pseudo"; - // $pseudo=""; - // $i++; - // } - - // val_string($pseudo,$i,$dVueEreur); - - // //Vérification Mot de Passe - // if (!isset($mdp)||$mdp=="") { - // $dVueEreur[] = "pas de mot de passe"; - // $mdp=""; - // $i++; - // } - - // val_string($mdp,$i,$dVueEreur); + //Vérification Email + $email = Validation::val_mail($email); + if ($email == NULL) { + $dVueErreur['mail'] = "Format du mail non-respecter*"; + } + + + //Vérification Pseudo + $pseudo = Validation::val_string($pseudo); + if ($pseudo == NULL) { + $dVueErreur['pseudo'] = "Le pseudo ne peut pas comporter de caractère spécial*"; + }else if(strlen($pseudo)<5){ + $dVueErreur['pseudo'] = "Le pseudo doit comporter au moins 5 caractères*"; + } - // if (!preg_match('/^.{5,}$/', $mdp)) { - // $dVueEreur[] = "Mot de passe trop léger : Plus de 5 caractères minimum !"; - // $i++; - // } + if (!preg_match('/^.{5,}$/', $mdp)) { + $dVueErreur['password'] = "Mot de passe trop léger : Plus de 5 caractères minimum !"; + } - // if($i>0){ - // return false; - // } - // return true; + if(count($dVueErreur)>0){ + throw new Exception("Erreur lors de l'inscription*"); + } } @@ -79,6 +72,14 @@ class Validation { return null; } + static function val_string(string &$str) { + if(filter_var($str, FILTER_SANITIZE_STRING)!=$str) + { + return null; + } + return $str; + } + static function cleanInt(string &$int) { $int = preg_replace('/[^0-9]/', '', $int); if($int == null || $int == '') diff --git a/src/controller/CtrlVisiteur.php b/src/controller/CtrlVisiteur.php index aea80f7..a5b1bf1 100644 --- a/src/controller/CtrlVisiteur.php +++ b/src/controller/CtrlVisiteur.php @@ -78,13 +78,19 @@ class CtrlVisiteur { global $rep,$vues; try{ - $val = MdlVisiteur::CreerUtilisateur(); + $val = MdlVisiteur::CreerUtilisateur($dVueErreur); $result=MdlUtilisateur::Connection(); $action=NULL; $this->ConsulterListePublic($dVueErreur); } catch (Exception $e) { + $ErreurLog=$e->getMessage(); + require ($rep.$vues['inscription']); + } + catch (PDOException $e) + { + $ErreurLog=$e->getMessage(); require ($rep.$vues['inscription']); } } @@ -129,7 +135,6 @@ class CtrlVisiteur { $taches = MdlVisiteur::RecupererTache(); $action=NULL; require ($rep.$vues['listPublic']); - } function SupprimerListe(array $dVueErreur){ @@ -139,7 +144,6 @@ class CtrlVisiteur { $taches = MdlVisiteur::RecupererTache(); $action=NULL; require ($rep.$vues['listPublic']); - } }//fin class diff --git a/src/modele/MdlVisiteur.php b/src/modele/MdlVisiteur.php index 4a3b07f..c8c92d3 100644 --- a/src/modele/MdlVisiteur.php +++ b/src/modele/MdlVisiteur.php @@ -7,20 +7,17 @@ class MdlVisiteur } - public static function CreerUtilisateur(){ - global $dVueEreur; + public static function CreerUtilisateur(&$dVueErreur){ $userGtw = new UtilisateurGateway(); - Validation::val_form_user($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["password"],$_POST["mail"],$dVueEreur); + Validation::val_form_user($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["password"],$_POST["mail"],$dVueErreur); + $userGtw->isExisteViaMail($_POST["mail"]); + $userGtw->isExisteViaPseudo($_POST["pseudo-Form"]); $hash = password_hash($_POST["password"], PASSWORD_DEFAULT); - // if(count($dVueEreur)!=0){ - // return null; - // } $userGtw->AjouterUtilisateur($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["mail"],$hash); } public static function RecupererListePublic(){ $userGtw = new ListeGateway(); - return $userGtw->getListePublic(0,10); } diff --git a/src/modele/gateway/UtilisateurGateway.php b/src/modele/gateway/UtilisateurGateway.php index af2a420..2d74bab 100644 --- a/src/modele/gateway/UtilisateurGateway.php +++ b/src/modele/gateway/UtilisateurGateway.php @@ -20,9 +20,34 @@ class UtilisateurGateway{ public function SupprimerUtilisateur(int $id){ $query="DELETE FROM ToDoList_Utilisateur WHERE id=:id"; $this->con->executeQuery($query, array( - 'id' => array($id, PDO::PARAM_STR))); + 'id' => array($id, PDO::PARAM_INT))); } + // Vérifie que le mail n'existe pas + public function isExisteViaMail($mail){ + $query="SELECT * FROM ToDoList_Utilisateur WHERE email=:mail"; + $this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR))); + $results=$this->con->getResults(); + if($results!=null){ + throw new PDOException("Erreur l'email existe déjà*"); + }else{ + return null; + } + } + + // Vérifie que le pseudo n'existe pas + public function isExisteViaPseudo($pseudo){ + $query="SELECT * FROM ToDoList_Utilisateur WHERE pseudo=:pseudo"; + $this->con->executeQuery($query, array('pseudo' => array($pseudo, PDO::PARAM_STR))); + $results=$this->con->getResults(); + if($results!=null){ + throw new PDOException("Erreur le pseudo existe déjà*"); + }else{ + return null; + } + } + + // Récupère le mot de passe pour la connexion via le mail en paramètres 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))); @@ -32,7 +57,6 @@ class UtilisateurGateway{ }else{ throw new Exception("Identifiant introuvable*"); } - } public function RechercheUtilisateurViaEmail(string $mail){ diff --git a/src/vue/css/style.css b/src/vue/css/style.css index 56b4aa6..20ff96d 100644 --- a/src/vue/css/style.css +++ b/src/vue/css/style.css @@ -12,6 +12,9 @@ body { font-weight: bold; align-items: center; justify-content: center; + -webkit-user-select: none; /* Safari */ + -ms-user-select: none; /* IE 10 and IE 11 */ + user-select: none; } body::before { @@ -285,6 +288,7 @@ body::before { .ErreurText{ color: red; font-size: 0.7rem; + font-weight: bold; } .button{ diff --git a/src/vue/html/NavBar.php b/src/vue/html/NavBar.php index 21cf3c7..d9e0ec8 100644 --- a/src/vue/html/NavBar.php +++ b/src/vue/html/NavBar.php @@ -1,5 +1,5 @@
-