Fonctionnement avec FrontControleur

gateway
Alexis FERON 1 year ago
parent 8943498064
commit 29b08cf4bb

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

@ -2,7 +2,61 @@
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;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
use config\Validation;
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()
{
global $twig; // nécessaire pour utiliser variables globales
// on démarre ou reprend la session pas utilisée ici
session_start();
//debut
//on initialise un tableau d'erreur
$dVueEreur = [];
try {
$action = $_REQUEST['action'] ?? null;
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
//pas d'action, on réinitialise 1er appel
case null:
$this->reinit();
case NULL:
case "accueil":
$this->accueil();
break;
case 'connection':
case "connection":
$this->connection();
break;
default:
$dVueEreur[] = "Erreur d'appel php";
echo $twig->render('accueil.html', ['dVueEreur' => $dVueEreur]);
case "inscription":
$this->inscription();
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
exit(0);
}//fin constructeur
/**
* @throws SyntaxError
* @throws RuntimeError
* @throws LoaderError
*/
private function connection()
protected function connection()
{
global $twig;
echo $twig->render('connection.html', []);
}
public function reinit()
protected function inscription()
{
global $twig;
echo $twig->render('inscription.html', []);
}
protected function accueil()
{
global $twig;
$dVue = [
'session' => ''
];
var_dump($dVue);
echo $twig->render('accueil.html', []);
}
echo $twig->render('accueil.html', [
'dVue' => $dVue
]);
protected function consulterProfilLimite()
{
//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
]);
$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 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 annonces</p>
<p>Connection :</p>
<form action="index.php?action=connection" method="POST">
<input type="submit" value="S'identifier">

@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<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>
<body>
<div class="container">
@ -36,7 +36,9 @@
</div>
</div>
<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>
</div>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>

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