Fonctionnement avec FrontControleur

gateway
Alexis FERON 1 year ago
parent 8943498064
commit 29b08cf4bb

@ -2,7 +2,61 @@
namespace controleur; namespace controleur;
class AdminControleur use config\Validation;
class AdminControleur extends ModerateurControleur
{ {
public function __construct()
{
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case "supprimerCompte":
$this->supprimerCompte();
break;
case "consulterSignalement":
$this->consulterSignalement();
break;
case "creerEvenement":
$this->creerEvenement();
break;
case "supprimerEvenement":
$this->supprimerEvenement();
break;
case "supprimerOffre":
$this->supprimerOffre();
break;
default:
parent::__construct();
}
}
protected function supprimerCompte()
{
//TODO
}
protected function consulterSignalement()
{
//TODO
}
protected function creerEvenement()
{
//TODO
}
protected function supprimerEvenement()
{
//TODO
}
protected function supprimerOffre()
{
//TODO
}
} }

@ -1,57 +1,56 @@
<?php <?php
namespace controleur; namespace controleur;
use config\Validation;
class FrontControleur class FrontControleur
{ {
public function __construct() public function __construct()
{ {
global $twig; // nécessaire pour utiliser variables globales global $twig;
// on démarre ou reprend la session pas utilisée ici
session_start(); session_start();
$dVueErreur = [];
//debut $actions = array(
//on initialise un tableau d'erreur "Admin" => [
$dVueEreur = []; "supprimerCompte", "consulterSignalement", "creerEvenement", "supprimerEvenement","supprimerOffre"
],
try { "Modérateur" => [
$action = $_REQUEST['action'] ?? null; //TODO
],
switch($action) { "Membre" => [
//pas d'action, on réinitialise 1er appel "deconnexion","proposerOffre","consulterProfil","modifierProfil","signaler"
case null: ],
$this->reinit(); "Utilisateur" => [
break; "connection", "inscription", "accueil","consulterProfilLimite"
]
default: );
$dVueEreur[] = "Erreur d'appel php";
echo $twig->render('accueil.html', ['dVueEreur' => $dVueEreur]); $action = Validation::nettoyerString($_GET["action"] ?? "");
break; if(in_array($action,$actions['Admin'])) {
if (false) { //TODO: tester si connecté en tant qu'admin via la session
$dVueErreur[] = 'Veuillez vous connecter';
echo $twig->render('erreur.html', ['dVueEreur' => $dVueErreur]);
} else{
new AdminControleur();
} }
} catch (\PDOException $e) {
//si erreur BD, pas le cas ici
$dVueEreur[] = 'Erreur inattendue!!! ';
} catch (\Exception $e2) {
$dVueEreur[] = 'Erreur inattendue!!! ';
echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]);
} }
else if(in_array($action,$actions['Modérateur'])) {
//fin if (false) { //TODO: tester si connecté en tant que modérateur via la session
exit(0); $dVueErreur[] = 'Veuillez vous connecter';
}//fin constructeur echo $twig->render('erreur.html', ['dVueEreur' => $dVueErreur]);
} else{
public function reinit() new ModerateurControleur();
{ }
global $twig; // nécessaire pour utiliser variables globales }
echo 'toto'; else if(in_array($action,$actions['Membre'])) {
$dVue = [ if (isset($_SESSION["login"]) && !empty($_SESSION["login"]) == null) {
'nom' => '', $dVueErreur[] = 'Veuillez vous connecter';
'age' => 0, echo $twig->render('erreur.html', ['dVueEreur' => $dVueErreur]);
]; } else{
var_dump($dVue); new MembreControleur();
}
echo $twig->render('accueil.html', [ }else{
'dVue' => $dVue new UtilisateurControleur();
]); }
} }
} }

@ -2,7 +2,61 @@
namespace controleur; namespace controleur;
class MembreControleur use config\Validation;
class MembreControleur extends UtilisateurControleur
{ {
public function __construct()
{
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case "deconnexion":
$this->deconnexion();
break;
case "proposerOffre":
$this->proposerOffre();
break;
case "consulterProfil":
$this->consulterProfil();
break;
case "modifierProfil":
$this->modifierProfil();
break;
case "signaler":
$this->signaler();
break;
default:
parent::__construct();
}
}
protected function deconnexion()
{
//TODO
}
protected function proposerOffre()
{
//TODO
}
protected function consulterProfil()
{
//TODO
}
protected function modifierProfil()
{
//TODO
}
protected function signaler()
{
//TODO
}
} }

@ -0,0 +1,22 @@
<?php
namespace controleur;
use config\Validation;
class ModerateurControleur extends MembreControleur
{
public function __construct()
{
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
default:
parent::__construct();
}
}
}

@ -2,73 +2,60 @@
namespace controleur; namespace controleur;
use Twig\Error\LoaderError; use config\Validation;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
class UtilisateurControleur class UtilisateurControleur
{ {
//Ce controlleur est appelé par le FrontControleur uniquement si l'action demandée est 'utilisateur' (un user lambda non connecté) public function __construct()
public function __construct()
{ {
global $twig; // nécessaire pour utiliser variables globales global $twig;
// on démarre ou reprend la session pas utilisée ici if (!isset($_REQUEST["action"])) {
session_start(); $action = NULL;
} else {
//debut $action = Validation::nettoyerString($_REQUEST["action"]);
//on initialise un tableau d'erreur }
$dVueEreur = []; switch ($action) {
case NULL:
try { case "accueil":
$action = $_REQUEST['action'] ?? null; $this->accueil();
switch($action) {
//pas d'action, on réinitialise 1er appel
case null:
$this->reinit();
break; break;
case 'connection': case "connection":
$this->connection(); $this->connection();
break; break;
default: case "inscription":
$dVueEreur[] = "Erreur d'appel php"; $this->inscription();
echo $twig->render('accueil.html', ['dVueEreur' => $dVueEreur]);
break; break;
case "consulterProfilLimite":
$this->consulterProfilLimite();
break;
default:
$dVueErreur[] ="Action inconnue ou non autorisée";
echo $twig->render("erreur.html",['dVueEreur' => $dVueErreur]);
} }
} catch (\PDOException $e) {
//si erreur BD, pas le cas ici
$dVueEreur[] = 'TODO ';
} catch (\Exception $e2) {
$dVueEreur[] = 'TODO ';
echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]);
} }
//fin protected function connection()
exit(0);
}//fin constructeur
/**
* @throws SyntaxError
* @throws RuntimeError
* @throws LoaderError
*/
private function connection()
{ {
global $twig; global $twig;
echo $twig->render('connection.html', []); echo $twig->render('connection.html', []);
} }
public function reinit() protected function inscription()
{
global $twig;
echo $twig->render('inscription.html', []);
}
protected function accueil()
{ {
global $twig; global $twig;
$dVue = [ echo $twig->render('accueil.html', []);
'session' => '' }
];
var_dump($dVue);
echo $twig->render('accueil.html', [ protected function consulterProfilLimite()
'dVue' => $dVue {
]); //TODO
} }
} }

@ -0,0 +1,14 @@
@import url(https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Share+Tech+Mono&display=swap);
*{
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
body{
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #2f363e;
}

@ -0,0 +1,18 @@
<?php
class EvenementGateway
{
private Connection $con;
/**
* @param $con
*/
public function __construct(Connection $con){
$this->con = $con;
}
public function insert(){
$query='INSERT INTO Evenement VALUES ()';
$this->con->executeQuery($query, array());
}
}

@ -0,0 +1,18 @@
<?php
class OffreGateway
{
private Connection $con;
/**
* @param $con
*/
public function __construct(Connection $con){
$this->con = $con;
}
public function insert(){
$query='INSERT INTO Offre VALUES ()';
$this->con->executeQuery($query, array());
}
}

@ -13,4 +13,4 @@ $twig = new \Twig\Environment($loader, [
'debug' => true 'debug' => true
]); ]);
$cont = new \controleur\UtilisateurControleur(); $cont = new \controleur\FrontControleur();

@ -0,0 +1,6 @@
<?php
class Evenement
{
}

@ -0,0 +1,6 @@
<?php
class Offre
{
}

@ -0,0 +1,8 @@
<?php
namespace modeles;
class ModerateurControleur
{
}

@ -12,7 +12,7 @@
<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>
<p>Vous pouvez aussi consulter les articles</p> <p>Vous pouvez aussi consulter les annonces</p>
<p>Connection :</p> <p>Connection :</p>
<form action="index.php?action=connection" method="POST"> <form action="index.php?action=connection" method="POST">
<input type="submit" value="S'identifier"> <input type="submit" value="S'identifier">

@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Alica - Connection</title> <title>Alica - Connection</title>
<link rel="stylesheet" type="text/css" href="css/login.css"> <link rel="stylesheet" type="text/css" href="css/connection.css">
</head> </head>
<body> <body>
<div class="container"> <div class="container">
@ -36,7 +36,9 @@
</div> </div>
</div> </div>
<a href="#" class="forgot">Mot de passe oublié</a> <a href="#" class="forgot">Mot de passe oublié</a>
<br><a href="" class="register">S'inscrire</a> </form>
<form action="index.php?action=inscription" method="POST">
<input type="submit" value="S'inscrire">
</form> </form>
</div> </div>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script> <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>

@ -3,15 +3,18 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Erreur</title> <title>Alica - Erreur</title>
</head> </head>
<body> <body>
<h1>ERREUR page !!!!!</h1> <h1>Page d'erreur</h1>
{% if dVueEreur is defined %} {% if dVueEreur is defined %}
{% for value in dVueEreur %} {% for value in dVueEreur %}
<p>{{value}}</p> <p>{{value}}</p>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<form action="index.php?action=accueil" method="POST">
<input type="submit" value="Retourner à l'accueil">
</form>
</body> </body>
</html> </html>

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Alica - Inscription</title>
<link rel="stylesheet" type="text/css" href="css/inscription.css">
</head>
<body>
<div class="container">
<form action="" method="POST">
<h3>S'inscrire</h3>
<div class="CadreInput">
<span>Identifiant</span>
<div class="box">
<div class="icon"><ion-icon name="person"></ion-icon>
</div>
<input type="text" name="username" required>
</div>
</div>
<div class="CadreInput">
<span>Email</span>
<div class="box">
<div class="icon"><ion-icon name="mail-outline"></ion-icon>
</div>
<input type="email" name="email" required>
</div>
</div>
<div class="CadreInput">
<span>Mot de passe</span>
<div class="box">
<div class="icon"><ion-icon name="lock-closed"></ion-icon>
</div>
<input type="password" name="password" required>
</div>
</div>
<div class="CadreInput">
<div class="box">
<div class="icon"></div>
<input type="submit" value="Creer mon compte">
</div>
</div>
</form>
<form action="index.php?action=connection" method="POST">
<input type="submit" value="S'identifier">
</form>
</div>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script noModule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
</body>
</html>
Loading…
Cancel
Save