inscription-connection
Leo Tuaillon 1 year ago
parent 7772e9da45
commit 959b9cf0d0

@ -7,6 +7,6 @@ $rep = __DIR__ . '/php/';
$dConfig['includes']= array('controleur/Validation.php'); $dConfig['includes']= array('controleur/Validation.php');
//BD //BD
$base = 'mysql:host=localhost;dbname=dbAlica'; define('DB_HOST', 'mysql:host=localhost;dbname=dbAlica');
$login = 'root'; define('DB_USER', 'Dev');
$mdp = ''; define('DB_PASS', 'Dev');

@ -22,6 +22,7 @@ class UtilisateurControleur
break; break;
case "inscription": case "inscription":
$this->inscription(); $this->inscription();
break; break;
case "consulterProfilLimite": case "consulterProfilLimite":
$this->consulterProfilLimite(); $this->consulterProfilLimite();
@ -36,7 +37,22 @@ class UtilisateurControleur
protected function connection() protected function connection()
{ {
global $twig; 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() protected function inscription()
@ -47,29 +63,26 @@ class UtilisateurControleur
if (isset($_POST['email'], $_POST['username'], $_POST['password'])) { if (isset($_POST['email'], $_POST['username'], $_POST['password'])) {
$email = \App\config\Validation::nettoyerString($_POST['email']); $email = \App\config\Validation::nettoyerString($_POST['email']);
$motDePasse = \App\config\Validation::nettoyerString($_POST['password']); $motDePasse = \App\config\Validation::nettoyerString($_POST['password']);
// verification que l'email est valide et unique :
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Validez les données d'inscription, par exemple, vérifiez si l'email est unique $dVueErreur[] = "L'adresse email n'est pas valide.";
// Vous pouvez également effectuer d'autres validations nécessaires } 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(); $userModel = new \App\modele\UtilisateurModele();
$nouvelUtilisateur = $userModel->inscription($email, $motDePasse); $nouvelUtilisateur = $userModel->inscription($email, $motDePasse);
// Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation if ($nouvelUtilisateur instanceof \App\metier\Alumni) {
// 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 :
header('Location: index.php?action=inscription_success'); header('Location: index.php?action=inscription_success');
exit(); exit();
} else { } else {
// L'inscription a échoué, ajoutez un message d'erreur
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer."; $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]); echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
} }

@ -64,12 +64,12 @@ class AlumniGateway
} }
public function findByEmail(string $email){ public function findByEmail(string $email){
$query='SELECT * FROM Alumni WHERE email=:e'; $query='SELECT * FROM Alumni WHERE mail=:e';
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
':e' => array($email, PDO::PARAM_STR), ':e' => array($email, PDO::PARAM_STR),
)); ));
$res=$this->con->getResults(); $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(){ public function getAll(){

@ -1,6 +1,6 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Alumni{ class Alumni{
/** /**
@ -50,4 +50,9 @@ class Alumni{
{ {
return $this->role; return $this->role;
} }
public function getPassword(): string
{
return $this->motDePasse;
}
} }

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Article class Article
{ {

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Evenement class Evenement
{ {

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Experience class Experience
{ {

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Formation class Formation
{ {

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
enum TypeContrat enum TypeContrat
{ {

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Profil class Profil
{ {

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
enum Role enum Role
{ {
case Admin; case Admin;

@ -2,13 +2,15 @@
namespace App\modele; namespace App\modele;
use App\metier\Alumni;
class AdminModele extends MembreModele class AdminModele extends MembreModele
{ {
/** /**
* @description supprimer un compte * @description supprimer un compte
* @param Alumni $account compte à supprimer * @param Alumni $account compte à supprimer
*/ */
public function deleteAccount(\App\modele\Alumni $account) public function deleteAccount(\App\metier\Alumni $account)
{ {
// TO DO // TO DO
} }

@ -16,12 +16,31 @@ class UtilisateurModele
* @description se connecter * @description se connecter
* @param string email * @param string email
* @param string hash * @param string hash
* @return \App\modele\Alumni * @return \App\metier\Alumni
*/ */
public function Login(string $email,string $hash) : \App\modele\Alumni public function connection(string $email, string $hash) : \App\metier\Alumni
{ {
// TO DO $dsn = "mysql:host=localhost;dbname=dbAlica";
return new \App\modele\Alumni(null,null,null); $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, 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 * @param string $pseudo
* @return \Alumni chargé * @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"; $dsn = "mysql:host=localhost;dbname=dbAlica";
$username = "Dev"; $username = "Dev";
@ -43,11 +62,30 @@ class UtilisateurModele
// Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway // Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway
if ($gate->insert($email, $hashpassword, $role)) { if ($gate->insert($email, $hashpassword, $role)) {
// L'insertion a réussi, retournez le nouvel utilisateur // 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; return $nouvelUtilisateur;
} else { } else {
// L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec // 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;
} }
} }
} }

@ -10,6 +10,8 @@
<body> <body>
<h1>Accueil</h1> <h1>Accueil</h1>
<!-- Bienvenu suivie du mail des informations sessions de l'utilisateur -->
<p>Bienvenue {{session.mail}}</p>
<p>Vous êtes sur la page d'accueil</p> <p>Vous êtes sur la page d'accueil</p>
<p>Vous pouvez vous connecter ou vous inscrire</p> <p>Vous pouvez vous connecter ou vous inscrire</p>
<p>Vous pouvez aussi consulter les articles</p> <p>Vous pouvez aussi consulter les articles</p>
@ -22,3 +24,4 @@
</html> </html>

@ -16,7 +16,7 @@
<div class="icon"> <div class="icon">
<ion-icon name="person"></ion-icon> <ion-icon name="person"></ion-icon>
</div> </div>
<input type="text" name="username" required> <input type="text" name="email" required>
</div> </div>
</div> </div>
<div class="CadreInput"> <div class="CadreInput">
Loading…
Cancel
Save