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

@ -12,4 +12,7 @@ RewriteEngine On
RewriteRule ^login$ index.php?action=redirectionLogin [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;
}
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) {
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{

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

@ -6,7 +6,7 @@ class CtrlUtilisateur {
global $rep,$vues;
$dVueEreur = array ();
$dVueErreur = array ();
try{
$action=NULL;
@ -18,14 +18,23 @@ class CtrlUtilisateur {
case NULL:
$this->($dVueEreur);
$this->ConsulterListePublic($dVueErreur);
break;
case "logout":
$this->SeDeconnecter($dVueErreur);
break;
case "redirectionProfil":
$this->redirectionProfil($dVueErreur);
break;
case "supprimerCompte":
$this->supprimerCompte($dVueErreur);
break;
default:
$dVueEreur[] = "Erreur d'appel php";
$dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['home']);
break;
}
@ -48,6 +57,35 @@ class CtrlUtilisateur {
exit(0);
}//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
?>

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

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

@ -9,12 +9,12 @@ class MdlUtilisateur
public function connection(){
$gtw=new UtilisateurGateway();
$mail=Validation::cleanString($_POST['mail']);
$mdp=Validation::cleanString($_POST['password']);
$mail=Validation::cleanMail($_POST['mail']);
$mdp=$_POST['password'];
$verif_pass=$gtw->getCredentials($mail);
if(password_verify($mdp,$verif_pass)){
$userCurrent=$gtw->RechercheUtilisateurViaEmail($mail);
$_SESSION['role']='user';
$_SESSION['role']='user';
$_SESSION['id']=$userCurrent->getId();
$_SESSION['nom']=$userCurrent->getNom();
$_SESSION['prenom']=$userCurrent->getPrenom();
@ -23,7 +23,33 @@ class MdlUtilisateur
return $userCurrent;
}
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(){
$userGtw = new ListeGateway();

@ -8,7 +8,7 @@ class UtilisateurGateway{
}
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(
'nom' => array($nom, PDO::PARAM_STR),
'prenom' => array($prenom, PDO::PARAM_STR),
@ -18,9 +18,9 @@ class UtilisateurGateway{
}
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(
'id' => array($id, PDO::PARAM_INT)));
'id' => array($id, PDO::PARAM_STR)));
}
public function getCredentials(string $mail){
@ -37,7 +37,7 @@ class UtilisateurGateway{
public function RechercheUtilisateurViaEmail(string $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();
if($results!=null){
return new Utilisateur($results[0]['id'],$results[0]['nom'],$results[0]['prenom'],$results[0]['pseudo'],$results[0]['email']);
@ -46,4 +46,4 @@ class UtilisateurGateway{
}
}
}
?>
?>

@ -18,9 +18,11 @@
<ul class="navbar-nav ml-auto">
<?php
if(isset($_SESSION['id'])){ ?>
<h4><a class="nav-item nav-link text-light" href="#">Mes listes</a></h4>
<h4><a class="nav-item nav-link text-light" href="index.php?action=logout">Se deconnecter</a></h4>
<?php
<h5><a class="nav-item nav-link text-light" href="VueListePublic">Listes Publiques</a></h5>
<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
} else {
?> <h5><a class="nav-item btn btn-outline-light" href="login">Se connecter</a></h5>
<h5><a class="nav-item nav-link text-light" href="inscription">S'inscrire</a></h5>

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

@ -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