From 959b9cf0d0cff181a8c9177a41235185ea4144a6 Mon Sep 17 00:00:00 2001 From: Leo Tuaillon Date: Mon, 6 Nov 2023 17:53:22 +0100 Subject: [PATCH] connection --- php/src/config/config.php | 6 +-- php/src/controleur/UtilisateurControleur.php | 43 +++++++++------ php/src/gateway/AlumniGateway.php | 4 +- php/src/{modele => metier}/Alumni.php | 7 ++- php/src/{modele => metier}/Article.php | 2 +- php/src/{modele => metier}/Evenement.php | 2 +- php/src/{modele => metier}/Experience.php | 2 +- php/src/{modele => metier}/Formation.php | 2 +- php/src/{modele => metier}/Offre.php | 2 +- php/src/{modele => metier}/Profil.php | 2 +- php/src/{modele => metier}/Role.php | 2 +- php/src/modele/AdminModele.php | 4 +- php/src/modele/UtilisateurModele.php | 52 ++++++++++++++++--- php/templates/accueil.html | 3 ++ .../{connexion.html => connection.html} | 2 +- 15 files changed, 98 insertions(+), 37 deletions(-) rename php/src/{modele => metier}/Alumni.php (88%) rename php/src/{modele => metier}/Article.php (97%) rename php/src/{modele => metier}/Evenement.php (98%) rename php/src/{modele => metier}/Experience.php (98%) rename php/src/{modele => metier}/Formation.php (98%) rename php/src/{modele => metier}/Offre.php (99%) rename php/src/{modele => metier}/Profil.php (98%) rename php/src/{modele => metier}/Role.php (77%) rename php/templates/{connexion.html => connection.html} (95%) diff --git a/php/src/config/config.php b/php/src/config/config.php index 0a66244..dcb711b 100755 --- a/php/src/config/config.php +++ b/php/src/config/config.php @@ -7,6 +7,6 @@ $rep = __DIR__ . '/php/'; $dConfig['includes']= array('controleur/Validation.php'); //BD -$base = 'mysql:host=localhost;dbname=dbAlica'; -$login = 'root'; -$mdp = ''; +define('DB_HOST', 'mysql:host=localhost;dbname=dbAlica'); +define('DB_USER', 'Dev'); +define('DB_PASS', 'Dev'); \ No newline at end of file diff --git a/php/src/controleur/UtilisateurControleur.php b/php/src/controleur/UtilisateurControleur.php index 7ac47ec..5df7d7d 100755 --- a/php/src/controleur/UtilisateurControleur.php +++ b/php/src/controleur/UtilisateurControleur.php @@ -22,6 +22,7 @@ class UtilisateurControleur break; case "inscription": $this->inscription(); + break; case "consulterProfilLimite": $this->consulterProfilLimite(); @@ -36,7 +37,22 @@ class UtilisateurControleur protected function connection() { global $twig; - echo $twig->render('connexion.html', []); + $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant + + if (isset($_POST['email'], $_POST['password'])) { + $email = \App\config\Validation::nettoyerString($_POST['email']); + $motDePasse = \App\config\Validation::nettoyerString($_POST['password']); + $userModel = new \App\modele\UtilisateurModele(); + $utilisateur = $userModel->connection($email, $motDePasse); + if ($utilisateur instanceof \App\metier\Alumni) { + $_SESSION['utilisateur'] = $utilisateur; + header('Location: index.php?action=accueil'); + exit(); + } else { + $dVueErreur[] = "L'adresse email ou le mot de passe est incorrect."; + } + } + echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]); } protected function inscription() @@ -47,29 +63,26 @@ class UtilisateurControleur if (isset($_POST['email'], $_POST['username'], $_POST['password'])) { $email = \App\config\Validation::nettoyerString($_POST['email']); $motDePasse = \App\config\Validation::nettoyerString($_POST['password']); - - - // Validez les données d'inscription, par exemple, vérifiez si l'email est unique - // Vous pouvez également effectuer d'autres validations nécessaires - + // verification que l'email est valide et unique : + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + $dVueErreur[] = "L'adresse email n'est pas valide."; + } else { + $userModel = new \App\modele\UtilisateurModele(); + $utilisateur = $userModel->getUtilisateurByEmail($email); + if ($utilisateur instanceof \App\metier\Alumni) { + $dVueErreur[] = "L'adresse email est déjà utilisée."; + } + } $userModel = new \App\modele\UtilisateurModele(); $nouvelUtilisateur = $userModel->inscription($email, $motDePasse); - // Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation - // Vous pouvez également gérer les erreurs ici en cas d'échec de l'inscription - - if ($nouvelUtilisateur instanceof \App\modele\Alumni) { - // L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation - // par exemple : + if ($nouvelUtilisateur instanceof \App\metier\Alumni) { header('Location: index.php?action=inscription_success'); exit(); } else { - // L'inscription a échoué, ajoutez un message d'erreur $dVueErreur[] = "L'inscription a échoué, veuillez réessayer."; } } - - // Affichez le formulaire d'inscription ou les erreurs le cas échéant echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]); } diff --git a/php/src/gateway/AlumniGateway.php b/php/src/gateway/AlumniGateway.php index 1a00ff4..9f140bc 100644 --- a/php/src/gateway/AlumniGateway.php +++ b/php/src/gateway/AlumniGateway.php @@ -64,12 +64,12 @@ class AlumniGateway } public function findByEmail(string $email){ - $query='SELECT * FROM Alumni WHERE email=:e'; + $query='SELECT * FROM Alumni WHERE mail=:e'; $this->con->executeQuery($query, array( ':e' => array($email, PDO::PARAM_STR), )); $res=$this->con->getResults(); - return new Alumni($res[0]['mail'],$res[0]['id'],$res[0]['mdp'],$res[0]['role']); + return new \App\metier\Alumni($res[0]['mail'],$res[0]['mdp'],$res[0]['role']); } public function getAll(){ diff --git a/php/src/modele/Alumni.php b/php/src/metier/Alumni.php similarity index 88% rename from php/src/modele/Alumni.php rename to php/src/metier/Alumni.php index 7084fba..d1ac2fe 100644 --- a/php/src/modele/Alumni.php +++ b/php/src/metier/Alumni.php @@ -1,6 +1,6 @@ role; } + + public function getPassword(): string + { + return $this->motDePasse; + } } \ No newline at end of file diff --git a/php/src/modele/Article.php b/php/src/metier/Article.php similarity index 97% rename from php/src/modele/Article.php rename to php/src/metier/Article.php index db20f77..1c4ca95 100644 --- a/php/src/modele/Article.php +++ b/php/src/metier/Article.php @@ -1,5 +1,5 @@ findByEmail($email); + if ($utilisateur instanceof \App\metier\Alumni) { + // L'utilisateur existe, vérifiez le mot de passe + if ($hash==$utilisateur->getPassword()) { + // Le mot de passe est correct, retournez l'utilisateur + return $utilisateur; + } else { + // Le mot de passe est incorrect, renvoyez null + return new \App\metier\Alumni(null, null, null); + } + } else { + // L'utilisateur n'existe pas, renvoyez null + return new \App\metier\Alumni(null, null, null); + } } /** @@ -31,7 +50,7 @@ class UtilisateurModele * @param string $pseudo * @return \Alumni chargé */ - public function inscription(string $email, string $hashpassword): \App\modele\Alumni + public function inscription(string $email, string $hashpassword): \App\metier\Alumni { $dsn = "mysql:host=localhost;dbname=dbAlica"; $username = "Dev"; @@ -43,11 +62,30 @@ class UtilisateurModele // Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway if ($gate->insert($email, $hashpassword, $role)) { // L'insertion a réussi, retournez le nouvel utilisateur - $nouvelUtilisateur = new \App\modele\Alumni($email, $hashpassword, $role); + $nouvelUtilisateur = new \App\metier\Alumni($email, $hashpassword, $role); return $nouvelUtilisateur; } else { // L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec - return new \App\modele\Alumni(null, null, null); + return new \App\metier\Alumni(null, null, null); + } + } + + public function getUtilisateurByEmail(string $email) + { + $dsn = "mysql:host=localhost;dbname=dbAlica"; + $username = "Dev"; + $password = "Dev"; + + $con = new \App\gateway\Connection($dsn, $username, $password); + $gate = new \App\gateway\AlumniGateway($con); + // Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway + $utilisateur = $gate->findByEmail($email); + if ($utilisateur instanceof \App\metier\Alumni) { + // L'utilisateur existe, retournez-le + return $utilisateur; + } else { + // L'utilisateur n'existe pas, renvoyez null + return null; } } } diff --git a/php/templates/accueil.html b/php/templates/accueil.html index 1438392..18b3aa3 100755 --- a/php/templates/accueil.html +++ b/php/templates/accueil.html @@ -10,6 +10,8 @@

Accueil

+ +

Bienvenue {{session.mail}}

Vous êtes sur la page d'accueil

Vous pouvez vous connecter ou vous inscrire

Vous pouvez aussi consulter les articles

@@ -22,3 +24,4 @@ + diff --git a/php/templates/connexion.html b/php/templates/connection.html similarity index 95% rename from php/templates/connexion.html rename to php/templates/connection.html index 2dd061a..5d90cbe 100755 --- a/php/templates/connexion.html +++ b/php/templates/connection.html @@ -16,7 +16,7 @@
- +