Logout, user profile page and deletion of their account have been done, also the generic front controller now works perfectly

listePrive
Emre KARTAL 2 years ago
parent 78b18d3825
commit 9b611a7cc5

@ -13,3 +13,6 @@ RewriteEngine On
RewriteRule ^login$ index.php?action=redirectionLogin [L] RewriteRule ^login$ index.php?action=redirectionLogin [L]
RewriteRule ^inscription$ index.php?action=redirectionInscription [L] RewriteRule ^inscription$ index.php?action=redirectionInscription [L]
RewriteRule ^VueListePublic$ index.php?action=redirectionListePublic [L] 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]

@ -62,6 +62,15 @@ class Validation {
return $str; return $str;
} }
static function cleanMail(string &$str) {
$str = preg_replace('/[^A-Za-z\-\^0-9\.\@]/', '', $str);
if($str == null || $str == '')
{
return null;
}
return $str;
}
static function val_mail(string &$mail) { static function val_mail(string &$mail) {
if(filter_var($mail, FILTER_VALIDATE_EMAIL)) if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{ {

@ -14,6 +14,6 @@ $vues['inscription']='vue/html/inscription.php';
$vues['listPublic']='vue/html/PageListePublic.php'; $vues['listPublic']='vue/html/PageListePublic.php';
$vues['login']='vue/html/login.php'; $vues['login']='vue/html/login.php';
$vues['NavBar']='vue/html/NavBar.php'; $vues['NavBar']='vue/html/NavBar.php';
$vues['profil']='vue/html/profil.php';
?> ?>

@ -6,7 +6,7 @@ class CtrlUtilisateur {
global $rep,$vues; global $rep,$vues;
$dVueEreur = array (); $dVueErreur = array ();
try{ try{
$action=NULL; $action=NULL;
@ -18,14 +18,23 @@ class CtrlUtilisateur {
case NULL: case NULL:
$this->($dVueEreur); $this->ConsulterListePublic($dVueErreur);
break; break;
case "logout":
$this->SeDeconnecter($dVueErreur);
break;
case "redirectionProfil":
$this->redirectionProfil($dVueErreur);
break;
case "supprimerCompte":
$this->supprimerCompte($dVueErreur);
break;
default: default:
$dVueEreur[] = "Erreur d'appel php"; $dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['home']); require ($rep.$vues['home']);
break; break;
} }
@ -48,6 +57,35 @@ class CtrlUtilisateur {
exit(0); exit(0);
}//fin constructeur }//fin constructeur
function ConsulterListePublic(array $dVueErreur) {
global $rep,$vues;
$listes = MdlVisiteur::RecupererListePublic();
$taches = MdlVisiteur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPublic']);
}
function SeDeconnecter(array $dVueErreur){
global $rep,$vues;
MdlUtilisateur::déconnexion();
$action=NULL;
require ($rep.$vues['login']);
}
function redirectionProfil(array $dVueErreur){
global $rep,$vues;
$action=NULL;
$user=MdlUtilisateur::isConnected();
require ($rep.$vues['profil']);
}
function supprimerCompte(array $dVueErreur){
global $rep,$vues;
$action=NULL;
$user=MdlUtilisateur::suppressionUtilisateur();
require ($rep.$vues['login']);
}
}//fin class }//fin class
?> ?>

@ -6,7 +6,7 @@ class CtrlVisiteur {
global $rep,$vues; global $rep,$vues;
$dVueEreur = array (); $dVueErreur = array ();
try{ try{
$action=NULL; $action=NULL;
@ -18,54 +18,54 @@ class CtrlVisiteur {
//pas d'action, on réinitialise 1er appel //pas d'action, on réinitialise 1er appel
case NULL: case NULL:
$this->ConsulterListePublic($dVueEreur); $this->ConsulterListePublic($dVueErreur);
break; break;
case "validationFormulaire": case "validationFormulaire":
$this->ValidationFormulaire($dVueEreur); $this->ValidationFormulaire($dVueErreur);
break; break;
case "seConnecter": case "seConnecter":
$this->seConnecter($dVueEreur); $this->seConnecter($dVueErreur);
break; break;
case "redirectionListePublic": case "redirectionListePublic":
$this->ConsulterListePublic($dVueEreur); $this->ConsulterListePublic($dVueErreur);
break; break;
case "redirectionLogin": case "redirectionLogin":
$this->redirectionLogin($dVueEreur); $this->redirectionLogin($dVueErreur);
break; break;
case "redirectionInscription": case "redirectionInscription":
$this->redirectionInscription($dVueEreur); $this->redirectionInscription($dVueErreur);
break; break;
case "SupprimerTache": case "SupprimerTache":
$this->SupprimerTache(); $this->SupprimerTache($dVueErreur);
break; break;
case "SupprimerListe": case "SupprimerListe":
$this->SupprimerListe(); $this->SupprimerListe($dVueErreur);
break; break;
//mauvaise action //mauvaise action
default: default:
$dVueEreur[] = "Erreur d'appel php"; $dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['home']); require ($rep.$vues['erreur']);
break; break;
} }
} catch (PDOException $e) } catch (PDOException $e)
{ {
//si erreur BD, pas le cas ici //si erreur BD, pas le cas ici
$dVueEreur[] = "Erreur: Connexion a la base de données impossible! "; $dVueErreur[] = "Erreur: Connexion a la base de données impossible! ";
require ($rep.$vues['erreur']); require ($rep.$vues['erreur']);
} }
catch (Exception $e) catch (Exception $e)
{ {
$dVueEreur[] = "Erreur venue de nulle part"; $dVueErreur[] = "Erreur venue de nulle part";
require ($rep.$vues['erreur']); require ($rep.$vues['erreur']);
} }
@ -74,34 +74,37 @@ class CtrlVisiteur {
exit(0); exit(0);
}//fin constructeur }//fin constructeur
function ValidationFormulaire(array $dVueEreur) { function ValidationFormulaire(array $dVueErreur) {
global $rep,$vues; global $rep,$vues;
try{
$val = MdlVisiteur::CreerUtilisateur(); $val = MdlVisiteur::CreerUtilisateur();
if($val==null){ $result=MdlUtilisateur::Connection();
$this->redirectionInscription($dVueEreur);
}else {
$action=NULL; $action=NULL;
$this->redirectionLogin($dVueEreur); $this->ConsulterListePublic($dVueErreur);
}
catch (Exception $e)
{
require ($rep.$vues['inscription']);
} }
} }
function redirectionLogin(array $dVueEreur) { function redirectionLogin(array $dVueErreur) {
global $rep,$vues; global $rep,$vues;
require ($rep.$vues['login']); require ($rep.$vues['login']);
} }
function redirectionInscription(array $dVueEreur) { function redirectionInscription(array $dVueErreur) {
global $rep,$vues; global $rep,$vues;
require ($rep.$vues['inscription']); require ($rep.$vues['inscription']);
} }
function seConnecter(array $dVueEreur) { function seConnecter(array $dVueErreur) {
global $rep,$vues; global $rep,$vues;
try{ try{
$result=MdlUtilisateur::Connection(); $result=MdlUtilisateur::Connection();
$action=NULL; $action=NULL;
$this->ConsulterListePublic($dVueEreur); $this->ConsulterListePublic($dVueErreur);
} }
catch (Exception $e) catch (Exception $e)
{ {
@ -111,7 +114,7 @@ class CtrlVisiteur {
} }
function ConsulterListePublic(array $dVueEreur) { function ConsulterListePublic(array $dVueErreur) {
global $rep,$vues; global $rep,$vues;
$listes = MdlVisiteur::RecupererListePublic(); $listes = MdlVisiteur::RecupererListePublic();
$taches = MdlVisiteur::RecupererTache(); $taches = MdlVisiteur::RecupererTache();
@ -119,7 +122,7 @@ class CtrlVisiteur {
require ($rep.$vues['listPublic']); require ($rep.$vues['listPublic']);
} }
function SupprimerTache(){ function SupprimerTache(array $dVueErreur){
global $rep,$vues; global $rep,$vues;
$tache = MdlVisiteur::SupprimerTache(); $tache = MdlVisiteur::SupprimerTache();
$listes = MdlVisiteur::RecupererListePublic(); $listes = MdlVisiteur::RecupererListePublic();
@ -129,7 +132,7 @@ class CtrlVisiteur {
} }
function SupprimerListe(){ function SupprimerListe(array $dVueErreur){
global $rep,$vues; global $rep,$vues;
$liste = MdlVisiteur::SupprimerListe(); $liste = MdlVisiteur::SupprimerListe();
$listes = MdlVisiteur::RecupererListePublic(); $listes = MdlVisiteur::RecupererListePublic();
@ -138,6 +141,8 @@ class CtrlVisiteur {
require ($rep.$vues['listPublic']); require ($rep.$vues['listPublic']);
} }
}//fin class }//fin class
?> ?>

@ -4,32 +4,37 @@ class FrontControleur {
function __construct(){ function __construct(){
session_start(); session_start();
try { try {
// $string_actor=' '; global $rep,$vues;
// $listeActions=array( $string_actor=' ';
// 'Utilisateur' => array('fqds','fdqs'), $listeActions=array(
// 'Admin' => array() 'Utilisateur' => array('logout','redirectionProfil','supprimerCompte'),
// ); 'Admin' => array()
);
// //On récupère l'action
// $action=$_REQUEST['action']; //On récupère l'action
$action=NULL;
if(isset($_REQUEST['action'])){
$action = $_REQUEST["action"];
}
// //On vérifie si l'action fait partie des listes d'actions //On vérifie si l'action fait partie des listes d'actions
// $string_actor=quelListe($action,$listeActions); $string_actor=FrontControleur::quelListe($action,$listeActions);
// if($string_actor!=NULL){ if($string_actor!=NULL){
// $mdl=new mdl.$string_actor; $class= 'Mdl'.$string_actor;
// $actor=$mdl.isMdl; $mdl=new $class();
// if($actor==NULL){ $actor=$mdl->isConnected();
// require('login'.$string_actor); if($actor==NULL){
// } require($rep.$vues['login']);
// else{ }
// $ctrl=new Ctrl.$string_actor ; else{
$ctrl='Ctrl'.$string_actor;
new $ctrl();
// } }
// } }
// else else
new CtrlVisiteur(); new CtrlVisiteur();
} catch (Exception $e) { } catch (Exception $e) {
$dVueEreur[] = "Erreur inattendue!!! "; $dVueEreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']); require ($rep.$vues['erreur']);

@ -9,8 +9,8 @@ class MdlUtilisateur
public function connection(){ public function connection(){
$gtw=new UtilisateurGateway(); $gtw=new UtilisateurGateway();
$mail=Validation::cleanString($_POST['mail']); $mail=Validation::cleanMail($_POST['mail']);
$mdp=Validation::cleanString($_POST['password']); $mdp=$_POST['password'];
$verif_pass=$gtw->getCredentials($mail); $verif_pass=$gtw->getCredentials($mail);
if(password_verify($mdp,$verif_pass)){ if(password_verify($mdp,$verif_pass)){
$userCurrent=$gtw->RechercheUtilisateurViaEmail($mail); $userCurrent=$gtw->RechercheUtilisateurViaEmail($mail);
@ -25,6 +25,32 @@ class MdlUtilisateur
else throw new Exception('Mot de passe incorrect*'); else throw new Exception('Mot de passe incorrect*');
} }
public function isConnected(){
if(isset($_SESSION['id']) && isset($_SESSION['role'])) {
$id=Validation::cleanInt($_SESSION['id']);
$nom=Validation::cleanString($_SESSION['nom']);
$prenom=Validation::cleanString($_SESSION['prenom']);
$pseudo=Validation::cleanString($_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 function suppressionUtilisateur(){
$userGtw = new UtilisateurGateway();
$id=Validation::cleanInt($_SESSION['id']);
$userGtw->SupprimerUtilisateur(intval($id));
MdlUtilisateur::déconnexion();
}
public static function RecupererListePublic(){ public static function RecupererListePublic(){
$userGtw = new ListeGateway(); $userGtw = new ListeGateway();
return $userGtw->getListePublic(0,10); return $userGtw->getListePublic(0,10);

@ -8,7 +8,7 @@ class UtilisateurGateway{
} }
public function AjouterUtilisateur(string $nom,string $prenom, string $pseudo, string $email, string $mdp){ public function AjouterUtilisateur(string $nom,string $prenom, string $pseudo, string $email, string $mdp){
$query='INSERT INTO ToDoList_Utilisateur(nom,prenom,pseudo,email,motDePasse) values (:nom,:prenom,:pseudo,:email,:mdp);'; $query="INSERT INTO ToDoList_Utilisateur(nom,prenom,pseudo,email,motDePasse) values (:nom,:prenom,:pseudo,:email,:mdp)";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
'nom' => array($nom, PDO::PARAM_STR), 'nom' => array($nom, PDO::PARAM_STR),
'prenom' => array($prenom, PDO::PARAM_STR), 'prenom' => array($prenom, PDO::PARAM_STR),
@ -18,9 +18,9 @@ class UtilisateurGateway{
} }
public function SupprimerUtilisateur(int $id){ public function SupprimerUtilisateur(int $id){
$query='DELETE FROM ToDoList_Utilisateur WHERE id=:id;'; $query="DELETE FROM ToDoList_Utilisateur WHERE id=:id";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
'id' => array($id, PDO::PARAM_INT))); 'id' => array($id, PDO::PARAM_STR)));
} }
public function getCredentials(string $mail){ public function getCredentials(string $mail){
@ -37,7 +37,7 @@ class UtilisateurGateway{
public function RechercheUtilisateurViaEmail(string $mail){ public function RechercheUtilisateurViaEmail(string $mail){
$query = 'SELECT * FROM ToDoList_Utilisateur WHERE email=:mail'; $query = 'SELECT * FROM ToDoList_Utilisateur WHERE email=:mail';
$this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_INT))); $this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR)));
$results=$this->con->getResults(); $results=$this->con->getResults();
if($results!=null){ if($results!=null){
return new Utilisateur($results[0]['id'],$results[0]['nom'],$results[0]['prenom'],$results[0]['pseudo'],$results[0]['email']); return new Utilisateur($results[0]['id'],$results[0]['nom'],$results[0]['prenom'],$results[0]['pseudo'],$results[0]['email']);

@ -18,8 +18,10 @@
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<?php <?php
if(isset($_SESSION['id'])){ ?> if(isset($_SESSION['id'])){ ?>
<h4><a class="nav-item nav-link text-light" href="#">Mes listes</a></h4> <h5><a class="nav-item nav-link text-light" href="VueListePublic">Listes Publiques</a></h5>
<h4><a class="nav-item nav-link text-light" href="index.php?action=logout">Se deconnecter</a></h4> <h5><a class="nav-item nav-link text-light" href="#">Mes listes</a></h5>
<h5><a class="nav-item nav-link text-light" href="MonProfil">Mon Profil</a></h5>
<h5><a class="nav-item btn btn-outline-light" href="logout">Se déconnecter</a></h5>
<?php <?php
} else { } else {
?> <h5><a class="nav-item btn btn-outline-light" href="login">Se connecter</a></h5> ?> <h5><a class="nav-item btn btn-outline-light" href="login">Se connecter</a></h5>

@ -19,8 +19,8 @@
<div class="model"> <div class="model">
<h1>Un problème est survenue !</h1> <h1>Un problème est survenue !</h1>
<?php <?php
if (isset($dVueEreur)) { if (isset($dVueErreur)) {
foreach ($dVueEreur as $value){ foreach ($dVueErreur as $value){
echo $value; echo $value;
} }
} }

@ -0,0 +1,95 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Profil Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https:/stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- JavaScript Bundle with Popper -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<section style="background-color: white;">
<div class="container py-5">
<div class="row">
<div class="col">
<nav aria-label="breadcrumb" class="bg-info rounded-3 p-3 mb-4">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item"><a href="VueListePublic">Home</a></li>
<li class="breadcrumb-item"><a href="#">User</a></li>
<li class="breadcrumb-item active" aria-current="page">User Profile</li>
</ol>
</nav>
</div>
</div>
<div class="col-lg-15">
<div class="card mb-1">
<div class="card-body">
<div class="col-sm-15 text-center">
<p class="mb-0">Nom Prénom</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $user->getNom().' '.$user->getPrenom()?></p>
</div>
<hr>
<div class="col-sm-15 text-center">
<p class="mb-0">Pseudo</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $user->getPseudo()?></p>
</div>
<hr>
<div class="col-sm-15 text-center">
<p class="mb-0">Email</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $user->getMail()?></p>
</div>
<hr>
<div class="col-sm-15 text-center">
<p class="mb-0">Nombre de liste</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0">15 listes</p>
</div>
</div>
</div>
<div class="text-center">
<br>
<a type="button" class="btn btn-outline-info waves-effect" href="#">
Changer mot de passe
</a>
<a type="button" class="btn btn-outline-danger waves-effect" href="#" data-toggle="modal" data-target="#exampleModal">
Supprimer le compte
</a>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Suppression du compte</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Êtes-vous sûr de vouloir supprimer votre compte ?
</div>
<div class="modal-footer">
<a href="supprimerCompte" class="btn btn-danger">Supprimer quand même</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
</html>
Loading…
Cancel
Save