Changement du MVC

ServeurDeTest
Noé GARNIER 2 years ago
parent b1847a7b5b
commit d6dcb15c7b

@ -34,7 +34,7 @@ class Autoload
{ {
global $rep; global $rep;
$filename = $class.'.php'; $filename = $class.'.php';
$dir =array('Model/','./','Config/','Controller/'); $dir =array('Model/','./','Config/','Controller/','Metier/', 'Factory/');
foreach ($dir as $d){ foreach ($dir as $d){
$file=$rep.$d.$filename; $file=$rep.$d.$filename;
//echo $file; //echo $file;

@ -23,7 +23,7 @@ $sel = "JeSuisUnSeldeHashageEtJeSuisUniqueEtTresSecuriseEtJeSuisTresLong";
//Page //Page
$vues['main'] = 'View/src/pages/Main.php'; $vues['main'] = 'View/src/pages/Main.php';
$vues['presentation'] = 'View/src/pages/Presentation.html'; $vues['presentation'] = 'View/src/pages/Presentation.html';
$vues['login'] = '../View/src/pages/LogSign/Login.php'; $vues['login'] = '/View/src/pages/LogSign/Login.php';
$vues['signUp'] = 'View/src/pages/LogSign/SignUp.php'; $vues['signUp'] = 'View/src/pages/LogSign/SignUp.php';
$vues['enigme'] = 'View/src/pages/Palindrome.html'; $vues['enigme'] = 'View/src/pages/Palindrome.html';

@ -27,17 +27,28 @@ class Connection extends SQLite3
$this->enableExceptions(true); $this->enableExceptions(true);
} }
public function executeQuery(string $query, array $parameters = []) :bool { public function executeQuery(string $query, array $parameters = []): bool
{
$this->stmt = parent::prepare($query); $this->stmt = parent::prepare($query);
foreach ($parameters as $name => $value) { foreach ($parameters as $name => $value) {
$this->stmt->bindValue($name, $value[0], $value[1]); $this->stmt->bindValue($name, $value[0], $value[1]);
} }
$this->result = $this->stmt->execute(); $this->result = $this->stmt->execute();
return $this->result; if ($this->result == false) {
return false;
} else {
return true;
}
} }
public function getResults(): array { public function getResults(): array
return $this->result->fetchArray(); {
var_dump($this->result->fetchArray(SQLITE3_ASSOC));
if ($this->result->fetchArray(SQLITE3_ASSOC) == false) {
return array();
} else {
return $this->result->fetchArray(SQLITE3_ASSOC);
}
} }
} }

@ -7,9 +7,16 @@ class EnigmeGateway
* @param Connection $con * @param Connection $con
*/ */
public function __construct(Connection $con) public function __construct()
{ {
global $dsn, $rep, $vues, $error;
try{
$con = new Connection($dsn);
$this->con = $con; $this->con = $con;
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
} }
/** /**

@ -7,7 +7,6 @@ class FrontController
session_start(); session_start();
// $role=$_SESSION['role']; // $role=$_SESSION['role'];
// $action=$_REQUEST['action']; // $action=$_REQUEST['action'];
echo "frontController";
try { try {
new UserController(); new UserController();
} catch (Exception $e) { } catch (Exception $e) {

@ -6,9 +6,16 @@ class PartieGateway
/** /**
* @param Connection $con * @param Connection $con
*/ */
public function __construct(Connection $con) public function __construct()
{ {
global $dsn, $rep, $vues, $error;
try{
$con = new Connection($dsn);
$this->con = $con; $this->con = $con;
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
} }
/** /**

@ -6,177 +6,47 @@ class UserController
{ {
private Connection $con; private Connection $con;
function __construct() { function __construct()
{
try { try {
echo "UserController";
global $dsn, $rep, $vues, $error; global $dsn, $rep, $vues, $error;
$this->con=new Connection($dsn); $model = new Model();
echo "USconection";
$action = $_REQUEST['action']; $action = $_REQUEST['action'];
switch ($action) { switch ($action) {
case NULL: case NULL:
$this->goToHome(); $model->goToHome();
break; break;
case "signUp": case "signUp":
$this->signUp(); $model->signUp();
break; break;
case "login": case "login":
$this->login(); $model->login();
break; break;
case "goToPresentation": case "goToPresentation":
$this->goToPresentation(); $model->goToPresentation();
break; break;
case "goToHome": case "goToHome":
$this->goToHome(); $model->goToHome();
break; break;
case "goToLogin": case "goToLogin":
$this->goToLogin(); $model->goToLogin();
break; break;
case "goToSignUp": case "goToSignUp":
$this->goToSignUp(); $model->goToSignUp();
break; break;
case "goToEnigme": case "goToEnigme":
$this->goToEnigme(); $model->goToEnigme();
break; break;
case "goToQueue": case "goToQueue":
$this->goToQueue(); $model->goToQueue();
break; break;
} }
} catch (PDOException $e) } catch (PDOException $e) {
{
$error = $e->getMessage(); $error = $e->getMessage();
require($rep . $vues['erreur']); require($rep . $vues['erreur']);
}catch (Exception $e2) } catch (Exception $e2) {
{
$error = $e2->getMessage(); $error = $e2->getMessage();
require($rep . $vues['erreur']); require($rep . $vues['erreur']);
} }
} }
private function signUp() {
global $rep, $vues, $sel, $error;
try {
$gateway = new UtilisateurGateway($this->con);
$validation = new Validation();
if (! $validation->ValidateEmail($_REQUEST['email'])) {
$error = "Email invalides.";
throw (new Exception("Email non valide"));
}
if(! $validation->ValidateUsername($_REQUEST['username'])){
$error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux.";
throw(new Exception("Pseudo non valide"));
}
if(! $validation->ValidatePassword($_REQUEST['password'])){
$error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères.";
throw(new Exception("Mot de passe non valide"));
}
$j = $gateway->getUtilisateurByEmail($_REQUEST['email']);
if ($j->getEmail() != "null") {
$error = "Email déjà utilisé.";
throw (new Exception("Email déjà utilisé"));
}
$password = password_hash($_REQUEST['password'], PASSWORD_DEFAULT);
$estAdmin = $gateway->getEstAdminByEmail($_REQUEST['email']);
$Utilisateur = new Utilisateur($_REQUEST['email'], $_REQUEST['username'], $password, $estAdmin);
$gateway->insert($Utilisateur);
$_SESSION['connected'] = 'true';
$_SESSION['role'] = 'utilisateur';
require ($rep.$vues['main']);
}catch (PDOException $e)
{
$error = "Erreur de connexion à la base de données.";
require ($rep.$vues['erreur']);
}
catch (Exception $e){
require($rep.$vues['erreur']);
}
}
private function login(){
global $rep, $vues, $sel, $error;
try {
$gateway = new UtilisateurGateway($this->con);
$Utilisateur = $gateway->getUtilisateurByEmail($_REQUEST['email']);
if ($Utilisateur->getEmail() == null){
$error = "Utilisateur non trouvé.";
throw new Exception("Utilisateur introuvable");
}
$mdp = $gateway->getMdpByEmail($_REQUEST['email']);
if (password_verify($mdp, $_REQUEST['password'])){
$error = "Mot de passe incorrect.";
throw new Exception("Mot de passe invalide");
}
$estAdmin =$gateway->getEstAdminByEmail($_REQUEST['email']);
if ($estAdmin == true) {
$_SESSION['role'] = "admin";
}
else{
$_SESSION['role'] = "utilisateur";
}
$_SESSION['connected'] = 'true';
require ($rep.$vues['main']);
}catch (Exception $e){
require($rep.$vues['erreur']);
}
}
private function goToPresentation() {
global $rep, $vues, $error;
try {
require ($rep.$vues['presentation']);
}catch (Exception $e){
$error = "Erreur Inconnue";
require($rep.$vues['erreur']);
}
}
private function goToHome() {
global $rep, $vues, $error;
try {
require ($rep.$vues['main']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
private function goToLogin() {
global $rep, $vues, $error;
try {
require ($rep.$vues['login']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
private function goToSignUp() {
global $rep, $vues, $error;
try {
require ($rep.$vues['signUp']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
private function goToEnigme() {
global $rep, $vues, $error;
try {
require ($rep.$vues['enigme']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
private function goToQueue() {
global $rep, $vues, $error;
try {
require ($rep.$vues['Queue']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
} }

@ -1,5 +1,4 @@
<?php <?php
include_once "../Factory/PartieFactory.php";
class UtilisateurGateway class UtilisateurGateway
{ {
private Connection $con; private Connection $con;
@ -7,8 +6,15 @@ class UtilisateurGateway
/** /**
* @param Connection $con * @param Connection $con
*/ */
public function __construct(Connection $con){ public function __construct(){
global $dsn, $rep, $vues, $error;
try{
$con = new Connection($dsn);
$this->con = $con; $this->con = $con;
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
} }
/** /**

@ -1,6 +1,4 @@
<?php <?php
include_once "EnigmeFactory.php";
include_once "../Model/Partie.php";
class PartieFactory{ class PartieFactory{
public static function createPartieMulti($idMax,$resultsEnigme) : Partie public static function createPartieMulti($idMax,$resultsEnigme) : Partie
{ {

@ -0,0 +1,146 @@
<?php
class Model
{
private EnigmeGateway $enigme_gateway;
private PartieGateway $partie_gateway;
private UtilisateurGateway $utilisateur_gateway;
function __construct()
{
try {
global $error, $view, $rep;
$this->enigme_gateway = new EnigmeGateway();
$this->partie_gateway = new PartieGateway();
$this->utilisateur_gateway = new UtilisateurGateway();
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $view['erreur']);
}
}
public function signUp() {
global $rep, $vues, $sel, $error;
try {
$validation = new Validation();
if (! $validation->ValidateEmail($_REQUEST['email'])) {
$error = "Email invalides.";
throw (new Exception("Email non valide"));
}
if(! $validation->ValidateUsername($_REQUEST['username'])){
$error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux.";
throw(new Exception("Pseudo non valide"));
}
if(! $validation->ValidatePassword($_REQUEST['password'])){
$error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères.";
throw(new Exception("Mot de passe non valide"));
}
$j = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']);
if ($j->getEmail() != "null") {
$error = "Email déjà utilisé.";
throw (new Exception("Email déjà utilisé"));
}
$password = password_hash($_REQUEST['password'], PASSWORD_DEFAULT);
$estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($_REQUEST['email']);
$Utilisateur = new Utilisateur($_REQUEST['email'], $_REQUEST['username'], $password, $estAdmin);
$this->utilisateur_gateway->insert($Utilisateur);
$_SESSION['connected'] = 'true';
$_SESSION['role'] = 'utilisateur';
require ($rep.$vues['main']);
}catch (PDOException $e)
{
$error = "Erreur de connexion à la base de données.";
require ($rep.$vues['erreur']);
}
catch (Exception $e){
require($rep.$vues['erreur']);
}
}
public function login(){
global $rep, $vues, $sel, $error;
try {
$Utilisateur = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']);
if ($Utilisateur->getEmail() == "null") {
$error = "Utilisateur non trouvé.";
throw new Exception("Utilisateur introuvable");
}
$mdp = $this->utilisateur_gateway->getMdpByEmail($_REQUEST['email']);
if (password_verify($mdp, $_REQUEST['password'])){
$error = "Mot de passe incorrect.";
throw new Exception("Mot de passe invalide");
}
$estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($_REQUEST['email']);
if ($estAdmin == true) {
$_SESSION['role'] = "admin";
}
else{
$_SESSION['role'] = "utilisateur";
}
$_SESSION['connected'] = 'true';
require ($rep.$vues['main']);
}catch (Exception $e){
require($rep.$vues['erreur']);
}
}
public function goToPresentation() {
global $rep, $vues, $error;
try {
require ($rep.$vues['presentation']);
}catch (Exception $e){
$error = "Erreur Inconnue";
require($rep.$vues['erreur']);
}
}
public function goToHome() {
global $rep, $vues, $error;
try {
require ($rep.$vues['main']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
public function goToLogin() {
global $rep, $vues, $error;
try {
require ($rep.$vues['login']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
public function goToSignUp() {
global $rep, $vues, $error;
try {
require ($rep.$vues['signUp']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
public function goToEnigme() {
global $rep, $vues, $error;
try {
require ($rep.$vues['enigme']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
public function goToQueue() {
global $rep, $vues, $error;
try {
require ($rep.$vues['Queue']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
}
Loading…
Cancel
Save