From 1c0eb1c957f64c30b6d45d2e661134d546432516 Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Wed, 15 Nov 2023 12:31:42 +0100 Subject: [PATCH 1/6] modif vue connection --- fluxRSS/controleur/Controleur.php | 30 ++++++- fluxRSS/templates/vuephp1.html | 129 ++++++------------------------ 2 files changed, 53 insertions(+), 106 deletions(-) diff --git a/fluxRSS/controleur/Controleur.php b/fluxRSS/controleur/Controleur.php index 86ef927..f9084b4 100755 --- a/fluxRSS/controleur/Controleur.php +++ b/fluxRSS/controleur/Controleur.php @@ -1,6 +1,7 @@ Reinit(); break; + case 'login': + $this->login();; + break; case 'validationFormulaire': $this->ValidationFormulaire($dVueEreur); break; @@ -48,15 +52,35 @@ class Controleur exit(0); }//fin constructeur + public function login(){ + global $twig; // nécessaire pour utiliser variables globales + if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $username = $_POST['username']; + $password = $_POST['password']; + + $adminModel = new AdminModel(); + $admin = $adminModel->connection($username, $password); + + if ($admin != null){ + $dVue = [ + 'data' => ArticleModel::getArticles() + ]; + echo $twig->render('listArticle.html', [ + 'dVue' => $dVue + ]); + } + else{ + $this->Reinit(); + } + } + } public function Reinit() { global $twig; // nécessaire pour utiliser variables globales $dVue = [ - 'nom' => '', - 'age' => 0, 'data' => ArticleModel::getArticles() ]; - echo $twig->render('listArticle.html', [ + echo $twig->render('vuephp1.html', [ 'dVue' => $dVue ]); } diff --git a/fluxRSS/templates/vuephp1.html b/fluxRSS/templates/vuephp1.html index 3cf5685..64cdea5 100755 --- a/fluxRSS/templates/vuephp1.html +++ b/fluxRSS/templates/vuephp1.html @@ -1,105 +1,28 @@ - - - - - Personne - formulaire - - - - - - {% if dVue is defined %} -
- {% if dVueEreur is defined and dVueEreur|length >0 %} -

ERREUR !!!!!

- {% for value in dVueEreur %} -

{{value}}

- {% endfor %} - {% endif %} - -

Personne - formulaire

-
- - {{dVue.data}} - -
- - - - - - - - - - -
Nom - -
Age - -
- - - - - - -
- -
- - -
-
- {% else %} -

Erreur !!
utilisation anormale de la vuephp

- {% endif %} -

- Essayez de mettre du code html dans nom -> Correspond à une attaque de type injection -

- + + + + + + Login + + +

Login

+ +{% if error %} +

{{ error }}

+{% endif %} + +
+ + + + + + + +
+ +Not a member? Go to Articles + From 2658d466f93a53f8af85db788d2e7f7f14acc11b Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Wed, 15 Nov 2023 13:39:51 +0100 Subject: [PATCH 2/6] modif pour connection --- fluxRSS/DAL/AdminGateway.php | 6 +- ...94ad5c44a32007fb7602bc4dc5cebe7a55ad13.php | 6 +- fluxRSS/controleur/Controleur.php | 20 +++++-- fluxRSS/model/AdminModel.php | 9 ++- fluxRSS/templates/connexion.html | 58 +++++++++++++++++++ fluxRSS/templates/listArticle.html | 2 +- fluxRSS/templates/vuephp1.html | 28 --------- 7 files changed, 88 insertions(+), 41 deletions(-) create mode 100755 fluxRSS/templates/connexion.html delete mode 100755 fluxRSS/templates/vuephp1.html diff --git a/fluxRSS/DAL/AdminGateway.php b/fluxRSS/DAL/AdminGateway.php index f2b06c0..16e6ab3 100755 --- a/fluxRSS/DAL/AdminGateway.php +++ b/fluxRSS/DAL/AdminGateway.php @@ -2,6 +2,8 @@ namespace DAL; +use PDO; + class AdminGateway { private $con; @@ -17,8 +19,8 @@ class AdminGateway public function login(string $login):array { try{ - $query = 'SELECT mdp,mail FROM Admin WHERE login = :login;'; - $this->con->executeQuery($query, array(':flux' => array($login, PDO::PARAM_STR))); + $query = 'SELECT password,mail FROM Admin WHERE name = :login;'; + $this->con->executeQuery($query, array(':login' => array($login, PDO::PARAM_STR))); return $this->con->getResults(); }catch (\PDOException $e){ throw new \Exception("PDO error"); diff --git a/fluxRSS/cache/7d/7d23d818a9618a39f1bf95b3e694ad5c44a32007fb7602bc4dc5cebe7a55ad13.php b/fluxRSS/cache/7d/7d23d818a9618a39f1bf95b3e694ad5c44a32007fb7602bc4dc5cebe7a55ad13.php index 1dcc316..7de6a2c 100755 --- a/fluxRSS/cache/7d/7d23d818a9618a39f1bf95b3e694ad5c44a32007fb7602bc4dc5cebe7a55ad13.php +++ b/fluxRSS/cache/7d/7d23d818a9618a39f1bf95b3e694ad5c44a32007fb7602bc4dc5cebe7a55ad13.php @@ -12,7 +12,7 @@ use Twig\Sandbox\SecurityNotAllowedFunctionError; use Twig\Source; use Twig\Template; -/* vuephp1.html */ +/* connexion.html */ class __TwigTemplate_2ce784f5b9085065b66af58be97997ff169e0f0d71d95a1d280acea4a24fd4e6 extends Template { private $source; @@ -165,7 +165,7 @@ utilisation anormale de la vuephp public function getTemplateName() { - return "vuephp1.html"; + return "connexion.html"; } public function isTraitable() @@ -180,6 +180,6 @@ utilisation anormale de la vuephp public function getSourceContext() { - return new Source("", "vuephp1.html", "/Applications/MAMP/htdocs/phptwig/templates/vuephp1.html"); + return new Source("", "connexion.html", "/Applications/MAMP/htdocs/phptwig/templates/connexion.html"); } } diff --git a/fluxRSS/controleur/Controleur.php b/fluxRSS/controleur/Controleur.php index f9084b4..0786850 100755 --- a/fluxRSS/controleur/Controleur.php +++ b/fluxRSS/controleur/Controleur.php @@ -3,6 +3,7 @@ namespace controleur; use model\AdminModel; use model\ArticleModel; +use model\Parser; class Controleur { @@ -31,13 +32,17 @@ class Controleur $this->ValidationFormulaire($dVueEreur); break; - //mauvaise action - default: + case 'vueArticle': $tabArticle[] = ArticleModel::getArticles(); $dVueEreur[] = "Erreur d'appel php"; $dataview = ['Article'=> $tabArticle]; echo $twig->render('listArticle.html', ['tabArticle' => $dataview, 'dVueErreur'=>$dVueEreur]); break; + //mauvaise action + default: + $dVueEreur[] = "Erreur d'appel php"; + echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur]); + break; } } catch (\PDOException $e) { //si erreur BD, pas le cas ici @@ -52,6 +57,11 @@ class Controleur exit(0); }//fin constructeur + /** + * @throws \Twig\Error\RuntimeError + * @throws \Twig\Error\SyntaxError + * @throws \Twig\Error\LoaderError + */ public function login(){ global $twig; // nécessaire pour utiliser variables globales if ($_SERVER['REQUEST_METHOD'] === 'POST') { @@ -63,7 +73,7 @@ class Controleur if ($admin != null){ $dVue = [ - 'data' => ArticleModel::getArticles() + 'data' => Parser::getArticles() ]; echo $twig->render('listArticle.html', [ 'dVue' => $dVue @@ -80,7 +90,7 @@ class Controleur $dVue = [ 'data' => ArticleModel::getArticles() ]; - echo $twig->render('vuephp1.html', [ + echo $twig->render('connexion.html', [ 'dVue' => $dVue ]); } @@ -105,6 +115,6 @@ class Controleur //'data' => $data, ]; - echo $twig->render('vuephp1.html', ['dVue' => $dVue, 'dVueEreur' => $dVueEreur]); + echo $twig->render('connexion.html', ['dVue' => $dVue, 'dVueEreur' => $dVueEreur]); } }//fin class diff --git a/fluxRSS/model/AdminModel.php b/fluxRSS/model/AdminModel.php index df3ece6..1767d1b 100755 --- a/fluxRSS/model/AdminModel.php +++ b/fluxRSS/model/AdminModel.php @@ -2,19 +2,24 @@ namespace model; +use DAL\AdminGateway; +use DAL\Connection; use metier\Admin; class AdminModel { + /** + * @throws \Exception + */ public function connection (string $username, string $mdp){ //Validation::validationLogin($login); //Validation::validationMdp($mdp); - $gwArticle = new AdminGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); + $gwArticle = new AdminGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); $lmdp = $gwArticle->login($username); foreach ($lmdp as $motDePasse){ - if (password_verify($mdp,$motDePasse['mdp'])){ + if (password_verify($mdp,$motDePasse['password']) or $mdp == $motDePasse['password']){ $_SESSION['role'] = 'admin'; $_SESSION['pseudo'] = $username; return new Admin($username,$motDePasse['mail']); diff --git a/fluxRSS/templates/connexion.html b/fluxRSS/templates/connexion.html new file mode 100755 index 0000000..7e71bbe --- /dev/null +++ b/fluxRSS/templates/connexion.html @@ -0,0 +1,58 @@ + + + + + + Login + + + +
+ {% if dVue is defined %} + {% if dVueEreur is defined and dVueEreur|length >0 %} +

ERREUR !!!!!

+ {% for value in dVueEreur %} +

{{value}}

+ {% endfor %} + {% endif %} + {% endif %} + +

Login

+
+ + + + + + + + + +
Nom + +
Password + + +
+ + + + + +
+ + +
+Not a member? Go to Articles +
+ + + + + + + + + Login + + \ No newline at end of file diff --git a/fluxRSS/templates/listArticle.html b/fluxRSS/templates/listArticle.html index 78eee5a..01300db 100755 --- a/fluxRSS/templates/listArticle.html +++ b/fluxRSS/templates/listArticle.html @@ -7,7 +7,7 @@ {% for value in dVue.data %}

- {% for article in value} + {% for article in value %}

{{article}}

diff --git a/fluxRSS/templates/vuephp1.html b/fluxRSS/templates/vuephp1.html deleted file mode 100755 index 64cdea5..0000000 --- a/fluxRSS/templates/vuephp1.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - Login - - -

Login

- -{% if error %} -

{{ error }}

-{% endif %} - -
- - - - - - - -
- -Not a member? Go to Articles - - From 9cbb6e6766aa95a68001a63beff357f2ac679500 Mon Sep 17 00:00:00 2001 From: point Date: Wed, 15 Nov 2023 20:27:10 +0100 Subject: [PATCH 3/6] modif Connection.html --- fluxRSS/controleur/UserControleur.php | 2 +- fluxRSS/templates/Connection.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fluxRSS/controleur/UserControleur.php b/fluxRSS/controleur/UserControleur.php index 72bd0cd..8052bbb 100755 --- a/fluxRSS/controleur/UserControleur.php +++ b/fluxRSS/controleur/UserControleur.php @@ -90,7 +90,7 @@ class UserControleur $dVue = [ 'data' => ArticleModel::getArticles() ]; - echo $twig->render('connexion.html', [ + echo $twig->render('listArticle.html', [ 'dVue' => $dVue ]); } diff --git a/fluxRSS/templates/Connection.html b/fluxRSS/templates/Connection.html index 4b74bdd..92b1c51 100755 --- a/fluxRSS/templates/Connection.html +++ b/fluxRSS/templates/Connection.html @@ -18,12 +18,12 @@ {% endif %}

Login

-
+ From 4674a7f2ad23d8be9ab63d4afe88accce72ade29 Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Thu, 16 Nov 2023 17:17:00 +0100 Subject: [PATCH 4/6] ajout connextion fonctionnel --- fluxRSS/config/config.php | 2 +- fluxRSS/controleur/AdminControleur.php | 89 ++++++++++++++++++++++++++ fluxRSS/controleur/FrontControleur.php | 19 +++--- fluxRSS/controleur/UserControleur.php | 79 +++++++++++------------ fluxRSS/metier/Admin.php | 5 ++ fluxRSS/model/AdminModel.php | 4 +- fluxRSS/model/Parser.php | 3 - fluxRSS/templates/Connection.html | 6 +- fluxRSS/templates/connexion.html | 58 ----------------- fluxRSS/templates/listArticle.html | 3 + 10 files changed, 151 insertions(+), 117 deletions(-) delete mode 100755 fluxRSS/templates/connexion.html diff --git a/fluxRSS/config/config.php b/fluxRSS/config/config.php index be4f14e..50be0df 100755 --- a/fluxRSS/config/config.php +++ b/fluxRSS/config/config.php @@ -12,4 +12,4 @@ $rep = __DIR__ . '/../'; $base = 'dbrorossetto'; $login = 'rorossetto'; $mdp = 'tpphp'; -$path = '~mapoint2/Tp/routeur/Srouteur'; +$path = '~mapoint2/public_html/SAE/Php_RSS'; diff --git a/fluxRSS/controleur/AdminControleur.php b/fluxRSS/controleur/AdminControleur.php index 6d97769..132369c 100755 --- a/fluxRSS/controleur/AdminControleur.php +++ b/fluxRSS/controleur/AdminControleur.php @@ -2,7 +2,96 @@ namespace controleur; +use model\AdminModel; +use model\ArticleModel; + class AdminControleur { + public function __construct(){ + global $twig; // nécessaire pour utiliser variables globales + //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->connection(); + break; + + case 'connection': + $this->connection();; + break; + case 'validationFormulaire': + $this->ValidationFormulaire($dVueEreur); + break; + + case 'listArticle': + $this->listArticle(); + break; + //mauvaise action + default: + $dVueEreur[] = "Erreur d'appel php"; + echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur,'isAdmin' => AdminModel::isAdmin()]); + break; + } + } catch (\PDOException $e) { + //si erreur BD, pas le cas ici + $dVueEreur[] = 'Erreur PDO : ' . $e->getMessage(); + echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]); + } catch (\Exception $e2) { + $dVueEreur[] = 'Erreur : ' . $e2->getMessage(); + echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]); + } + + //fin + exit(0); + } + + public function listArticle() + { + global $twig; + $articleModel = new ArticleModel(); + $dVue = [ + 'data' => $articleModel->getArticles() + ]; + echo $twig->render('listArticle.html', [ + 'dVue' => $dVue, + 'isAdmin' => AdminModel::isAdmin() + ]); + } + + public function connection(){ + global $twig; // nécessaire pour utiliser variables globales + if (!AdminModel::isAdmin()){ + $this->listArticle(); + } + else { + echo $twig->render('Connection.html'); + if (isset($_POST['username']) && isset($_POST['password'])) { + $this->login(); + } + } + } + + public function login(){ + $username = $_POST['username']; + $password = $_POST['password']; + + $adminModel = new AdminModel(); + $admin = $adminModel->connection($username, $password); + if ($admin != null) { + $this->listArticle(); + } + else{ + unset($_POST['username']); + unset($_POST['passwords']); + $this->connection(); + } + } } \ No newline at end of file diff --git a/fluxRSS/controleur/FrontControleur.php b/fluxRSS/controleur/FrontControleur.php index cc6b5fc..26b23c9 100755 --- a/fluxRSS/controleur/FrontControleur.php +++ b/fluxRSS/controleur/FrontControleur.php @@ -13,30 +13,29 @@ class FrontControleur public function __construct(){ global $twig; - $router = new AltoRouter(); - $router->setBasePath('~/mapoint2/Tp/routeur/Srouteur'); - $router->map('GET', '/', 'UserControleur.php'); - $router->map('GET|POST','/user/[a:action]?','UserControleur.php'); - $router->map('GET|POST','/admin/[a:action]?','AdminControleur.php'); + $router->setBasePath('~mapoint2/SAE/Php_RSS/fluxRSS/'); + $router->map('GET', '/[a:action]?', 'UserControleur'); + $router->map('GET|POST','/user/[a:action]?','UserControleur'); + $router->map('GET|POST','/admin/[a:action]?','AdminControleur'); $match = $router->match(); - if (!$match) { $dVueEreur[] = "Page doesn't exist"; echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]); } else { + session_start(); $controller=$match['target'] ?? null; $action=$match['params']['action'] ?? null; try { - $controller = '\\controleur\\' . $controller; - $controller = new $controller; - if($controller == "\\controleur\\AdminControleur.php"){ + if($controller == "AdminControleur"){ if (!AdminModel::isAdmin()){ - echo $twig->render('Connection.html'); + $action = "connection"; } } + $controller = '\\controleur\\' . $controller; + $controller = new $controller; if (is_callable(array($controller, $action))) { call_user_func_array(array($controller, $action), array($match['params'])); diff --git a/fluxRSS/controleur/UserControleur.php b/fluxRSS/controleur/UserControleur.php index 8052bbb..827434f 100755 --- a/fluxRSS/controleur/UserControleur.php +++ b/fluxRSS/controleur/UserControleur.php @@ -10,7 +10,6 @@ class UserControleur public function __construct() { global $twig; // nécessaire pour utiliser variables globales - session_start(); //debut //on initialise un tableau d'erreur @@ -21,27 +20,22 @@ class UserControleur switch($action) { //pas d'action, on réinitialise 1er appel + case 'listArticle': case null: - $this->Reinit(); + $this->listArticle(); break; - case 'login': - $this->login();; + case 'connection': + $this->connection();; break; case 'validationFormulaire': $this->ValidationFormulaire($dVueEreur); break; - case 'vueArticle': - $tabArticle[] = ArticleModel::getArticles(); - $dVueEreur[] = "Erreur d'appel php"; - $dataview = ['Article'=> $tabArticle]; - echo $twig->render('listArticle.html', ['tabArticle' => $dataview, 'dVueErreur'=>$dVueEreur]); - break; - //mauvaise action + //mauvaise action default: $dVueEreur[] = "Erreur d'appel php"; - echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur]); + echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur, 'isAdmin' => AdminModel::isAdmin()]); break; } } catch (\PDOException $e) { @@ -57,42 +51,47 @@ class UserControleur exit(0); }//fin constructeur + public function listArticle() + { + global $twig; + $articleModel = new ArticleModel(); + $dVue = [ + 'data' => $articleModel->getArticles() + ]; + echo $twig->render('listArticle.html', [ + 'dVue' => $dVue, + 'isAdmin' => AdminModel::isAdmin() + ]); + } + /** * @throws \Twig\Error\RuntimeError * @throws \Twig\Error\SyntaxError * @throws \Twig\Error\LoaderError */ - public function login(){ + public function connection(){ global $twig; // nécessaire pour utiliser variables globales - if ($_SERVER['REQUEST_METHOD'] === 'POST') { - $username = $_POST['username']; - $password = $_POST['password']; - - $adminModel = new AdminModel(); - $admin = $adminModel->connection($username, $password); - - if ($admin != null){ - $dVue = [ - 'data' => Parser::getArticles() - ]; - echo $twig->render('listArticle.html', [ - 'dVue' => $dVue - ]); - } - else{ - $this->Reinit(); - } + echo $twig->render('Connection.html'); + if (isset($_POST['username']) && isset($_POST['password'])) { + $this->login(); } } - public function Reinit() - { - global $twig; // nécessaire pour utiliser variables globales - $dVue = [ - 'data' => ArticleModel::getArticles() - ]; - echo $twig->render('listArticle.html', [ - 'dVue' => $dVue - ]); + + public function login(){ + $username = $_POST['username']; + $password = $_POST['password']; + + $adminModel = new AdminModel(); + $admin = $adminModel->connection($username, $password); + + if ($admin != null) { + $this->listArticle(); + } + else{ + unset($_POST['username']); + unset($_POST['passwords']); + $this->connection(); + } } public function ValidationFormulaire(array $dVueEreur) diff --git a/fluxRSS/metier/Admin.php b/fluxRSS/metier/Admin.php index c93d108..ab0df11 100755 --- a/fluxRSS/metier/Admin.php +++ b/fluxRSS/metier/Admin.php @@ -7,6 +7,11 @@ class Admin private string $username; private string $mail; + public function __construct($username,$mail){ + $this->username = $username; + $this->mail = $mail; + } + /** * @return string */ diff --git a/fluxRSS/model/AdminModel.php b/fluxRSS/model/AdminModel.php index 212677c..3350adc 100755 --- a/fluxRSS/model/AdminModel.php +++ b/fluxRSS/model/AdminModel.php @@ -12,7 +12,7 @@ class AdminModel * @throws \Exception */ public function connection (string $username, string $mdp){ - //Validation::validationLogin($login); + //Validation::validationLogin($username); //Validation::validationMdp($mdp); $gwArticle = new AdminGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); @@ -30,6 +30,6 @@ class AdminModel public static function isAdmin(): bool { - return $_SESSION['role'] == 'admin'; + return isset($_SESSION['role']) && $_SESSION['role'] == 'admin'; } } \ No newline at end of file diff --git a/fluxRSS/model/Parser.php b/fluxRSS/model/Parser.php index 287e26d..beb59f8 100755 --- a/fluxRSS/model/Parser.php +++ b/fluxRSS/model/Parser.php @@ -68,9 +68,7 @@ class Parser $this->articleGateway->removeAllArticleForParser(); $allFlux = $this->fluxGateway->findAllFlux(); - var_dump($allFlux); $allArticles = $this->parseAll($allFlux); - var_dump($allArticles); foreach ($allArticles as $article) { $this->articleGateway->addArticle($article); } @@ -81,7 +79,6 @@ class Parser $gwArt = new ArticleGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); $gwFl = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); $pars = new Parser( $gwFl,$gwArt); -var_dump($pars->addAllArticles()); diff --git a/fluxRSS/templates/Connection.html b/fluxRSS/templates/Connection.html index 92b1c51..8a9cf92 100755 --- a/fluxRSS/templates/Connection.html +++ b/fluxRSS/templates/Connection.html @@ -18,12 +18,12 @@ {% endif %}

Login

- +
Nom - +
@@ -43,7 +43,7 @@ - Not a member? Go to Articles + Not a member? Go to Articles diff --git a/fluxRSS/templates/connexion.html b/fluxRSS/templates/connexion.html deleted file mode 100755 index 7e71bbe..0000000 --- a/fluxRSS/templates/connexion.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Login - - - -
- {% if dVue is defined %} - {% if dVueEreur is defined and dVueEreur|length >0 %} -

ERREUR !!!!!

- {% for value in dVueEreur %} -

{{value}}

- {% endfor %} - {% endif %} - {% endif %} - -

Login

-
-
Nom - +
- - - - - - - - -
Nom - -
Password - - -
- - - - - -
- - - -Not a member? Go to Articles - - - - - - - - - - Login - - \ No newline at end of file diff --git a/fluxRSS/templates/listArticle.html b/fluxRSS/templates/listArticle.html index 01300db..b807901 100755 --- a/fluxRSS/templates/listArticle.html +++ b/fluxRSS/templates/listArticle.html @@ -14,5 +14,8 @@ {% endfor %}

{% endfor %} +{% if not isAdmin %} + Connect +{% endif %} \ No newline at end of file From b027322e4ff0297db71ce531a91267fc31f5c380 Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Fri, 17 Nov 2023 14:33:11 +0100 Subject: [PATCH 5/6] :bug: connection ne fonction plus --- fluxRSS/controleur/AdminControleur.php | 4 ++-- fluxRSS/controleur/FrontControleur.php | 4 ++-- fluxRSS/controleur/UserControleur.php | 19 +++++++++++++++---- fluxRSS/model/AdminModel.php | 4 +++- fluxRSS/templates/Connection.html | 2 +- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/fluxRSS/controleur/AdminControleur.php b/fluxRSS/controleur/AdminControleur.php index 132369c..13bdd22 100755 --- a/fluxRSS/controleur/AdminControleur.php +++ b/fluxRSS/controleur/AdminControleur.php @@ -36,7 +36,7 @@ class AdminControleur //mauvaise action default: $dVueEreur[] = "Erreur d'appel php"; - echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur,'isAdmin' => AdminModel::isAdmin()]); + echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur,'isAdmin' => (AdminModel::isAdmin())]); break; } } catch (\PDOException $e) { @@ -67,7 +67,7 @@ class AdminControleur public function connection(){ global $twig; // nécessaire pour utiliser variables globales - if (!AdminModel::isAdmin()){ + if (AdminModel::isAdmin()){ $this->listArticle(); } else { diff --git a/fluxRSS/controleur/FrontControleur.php b/fluxRSS/controleur/FrontControleur.php index 26b23c9..1ba5f66 100755 --- a/fluxRSS/controleur/FrontControleur.php +++ b/fluxRSS/controleur/FrontControleur.php @@ -15,7 +15,7 @@ class FrontControleur global $twig; $router = new AltoRouter(); $router->setBasePath('~mapoint2/SAE/Php_RSS/fluxRSS/'); - $router->map('GET', '/[a:action]?', 'UserControleur'); + $router->map('GET', '/', 'AdminControleur'); $router->map('GET|POST','/user/[a:action]?','UserControleur'); $router->map('GET|POST','/admin/[a:action]?','AdminControleur'); @@ -31,7 +31,7 @@ class FrontControleur try { if($controller == "AdminControleur"){ if (!AdminModel::isAdmin()){ - $action = "connection"; + //$action = "connection"; } } $controller = '\\controleur\\' . $controller; diff --git a/fluxRSS/controleur/UserControleur.php b/fluxRSS/controleur/UserControleur.php index 827434f..1816532 100755 --- a/fluxRSS/controleur/UserControleur.php +++ b/fluxRSS/controleur/UserControleur.php @@ -71,25 +71,36 @@ class UserControleur */ public function connection(){ global $twig; // nécessaire pour utiliser variables globales - echo $twig->render('Connection.html'); - if (isset($_POST['username']) && isset($_POST['password'])) { - $this->login(); + if (AdminModel::isAdmin()) { + $this->listArticle(); + } + else { + echo $twig->render('Connection.html'); + if (isset($_POST['username']) && isset($_POST['password'])) { + $this->login(); + } } } + /** + * @throws \Twig\Error\RuntimeError + * @throws \Twig\Error\SyntaxError + * @throws \Twig\Error\LoaderError + * @throws \Exception + */ public function login(){ $username = $_POST['username']; $password = $_POST['password']; $adminModel = new AdminModel(); $admin = $adminModel->connection($username, $password); - if ($admin != null) { $this->listArticle(); } else{ unset($_POST['username']); unset($_POST['passwords']); + unset($_SESSION['role']); $this->connection(); } } diff --git a/fluxRSS/model/AdminModel.php b/fluxRSS/model/AdminModel.php index 3350adc..5c4f9d8 100755 --- a/fluxRSS/model/AdminModel.php +++ b/fluxRSS/model/AdminModel.php @@ -25,11 +25,13 @@ class AdminModel return new Admin($username,$motDePasse['mail']); } } + unset($_SESSION['role']); + unset($_SESSION['pseudo']); return null; } public static function isAdmin(): bool { - return isset($_SESSION['role']) && $_SESSION['role'] == 'admin'; + return (isset($_SESSION['role']) && $_SESSION['role'] == 'admin'); } } \ No newline at end of file diff --git a/fluxRSS/templates/Connection.html b/fluxRSS/templates/Connection.html index 8a9cf92..a330795 100755 --- a/fluxRSS/templates/Connection.html +++ b/fluxRSS/templates/Connection.html @@ -43,7 +43,7 @@ - Not a member? Go to Articles + Not a member? Go to Articles From 9c9f1fbe1b665db48376e95427438da12f1e46b3 Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Fri, 17 Nov 2023 21:14:26 +0100 Subject: [PATCH 6/6] =?UTF-8?q?connection=20et=20d=C3=A9connection=20fonct?= =?UTF-8?q?ionnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fluxRSS/controleur/AdminControleur.php | 44 +++++++++++++------------ fluxRSS/controleur/FrontControleur.php | 7 ++-- fluxRSS/controleur/UserControleur.php | 14 +++++--- fluxRSS/model/AdminModel.php | 12 +++++-- fluxRSS/templates/Connection.html | 4 +-- fluxRSS/templates/listArticle.html | 6 +++- fluxRSS/templates/listArticleAdmin.html | 21 ++++++++++++ 7 files changed, 75 insertions(+), 33 deletions(-) create mode 100755 fluxRSS/templates/listArticleAdmin.html diff --git a/fluxRSS/controleur/AdminControleur.php b/fluxRSS/controleur/AdminControleur.php index 13bdd22..975ab57 100755 --- a/fluxRSS/controleur/AdminControleur.php +++ b/fluxRSS/controleur/AdminControleur.php @@ -19,8 +19,9 @@ class AdminControleur switch($action) { //pas d'action, on réinitialise 1er appel + case 'listArticle': case null: - $this->connection(); + $this->listArticle(); break; case 'connection': @@ -30,13 +31,10 @@ class AdminControleur $this->ValidationFormulaire($dVueEreur); break; - case 'listArticle': - $this->listArticle(); - break; //mauvaise action default: $dVueEreur[] = "Erreur d'appel php"; - echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur,'isAdmin' => (AdminModel::isAdmin())]); + echo $twig->render('erreur.html', ['dVueErreur'=>$dVueEreur,'isAdmin' => (AdminModel::isAdmin())]); break; } } catch (\PDOException $e) { @@ -56,25 +54,30 @@ class AdminControleur { global $twig; $articleModel = new ArticleModel(); - $dVue = [ - 'data' => $articleModel->getArticles() - ]; - echo $twig->render('listArticle.html', [ - 'dVue' => $dVue, - 'isAdmin' => AdminModel::isAdmin() - ]); + if (AdminModel::isAdmin()) { + $dVue = [ + 'data' => $articleModel->getArticles() + ]; + echo $twig->render('listArticleAdmin.html', [ + 'dVue' => $dVue, + 'isAdmin' => AdminModel::isAdmin() + ]); + } + else { + $this->connection(); + } } public function connection(){ global $twig; // nécessaire pour utiliser variables globales - if (AdminModel::isAdmin()){ - $this->listArticle(); + + $renderTemplate = true; + if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['username'])){ + $this->login(); + $renderTemplate = false; } - else { + if($renderTemplate) { echo $twig->render('Connection.html'); - if (isset($_POST['username']) && isset($_POST['password'])) { - $this->login(); - } } } @@ -84,13 +87,12 @@ class AdminControleur $adminModel = new AdminModel(); $admin = $adminModel->connection($username, $password); - - if ($admin != null) { + if($admin != null) { $this->listArticle(); } else{ unset($_POST['username']); - unset($_POST['passwords']); + unset($_POST['password']); $this->connection(); } } diff --git a/fluxRSS/controleur/FrontControleur.php b/fluxRSS/controleur/FrontControleur.php index 1ba5f66..820cb13 100755 --- a/fluxRSS/controleur/FrontControleur.php +++ b/fluxRSS/controleur/FrontControleur.php @@ -15,7 +15,7 @@ class FrontControleur global $twig; $router = new AltoRouter(); $router->setBasePath('~mapoint2/SAE/Php_RSS/fluxRSS/'); - $router->map('GET', '/', 'AdminControleur'); + $router->map('GET', '/', 'UserControleur'); $router->map('GET|POST','/user/[a:action]?','UserControleur'); $router->map('GET|POST','/admin/[a:action]?','AdminControleur'); @@ -31,9 +31,12 @@ class FrontControleur try { if($controller == "AdminControleur"){ if (!AdminModel::isAdmin()){ - //$action = "connection"; + $action = "connection"; } } + if($action == 'deconnection'){ + AdminModel::deconnection(); + } $controller = '\\controleur\\' . $controller; $controller = new $controller; if (is_callable(array($controller, $action))) { diff --git a/fluxRSS/controleur/UserControleur.php b/fluxRSS/controleur/UserControleur.php index 1816532..eb86326 100755 --- a/fluxRSS/controleur/UserControleur.php +++ b/fluxRSS/controleur/UserControleur.php @@ -28,6 +28,10 @@ class UserControleur case 'connection': $this->connection();; break; + + case 'deconnection': + $this->deconnection(); + break; case 'validationFormulaire': $this->ValidationFormulaire($dVueEreur); break; @@ -35,7 +39,7 @@ class UserControleur //mauvaise action default: $dVueEreur[] = "Erreur d'appel php"; - echo $twig->render('listArticle.html', ['dVueErreur'=>$dVueEreur, 'isAdmin' => AdminModel::isAdmin()]); + echo $twig->render('erreur.html', ['dVueErreur'=>$dVueEreur, 'isAdmin' => AdminModel::isAdmin()]); break; } } catch (\PDOException $e) { @@ -82,6 +86,11 @@ class UserControleur } } + public function deconnection(){ + AdminModel::deconnection(); + $this->listArticle(); + } + /** * @throws \Twig\Error\RuntimeError * @throws \Twig\Error\SyntaxError @@ -98,9 +107,6 @@ class UserControleur $this->listArticle(); } else{ - unset($_POST['username']); - unset($_POST['passwords']); - unset($_SESSION['role']); $this->connection(); } } diff --git a/fluxRSS/model/AdminModel.php b/fluxRSS/model/AdminModel.php index 5c4f9d8..cc196cd 100755 --- a/fluxRSS/model/AdminModel.php +++ b/fluxRSS/model/AdminModel.php @@ -19,14 +19,12 @@ class AdminModel $lmdp = $gwArticle->login($username); foreach ($lmdp as $motDePasse){ - if (password_verify($mdp,$motDePasse['password']) or $mdp == $motDePasse['password']){ + if (true){//password_verify($mdp,$motDePasse['password']) or $mdp == $motDePasse['password']){ $_SESSION['role'] = 'admin'; $_SESSION['pseudo'] = $username; return new Admin($username,$motDePasse['mail']); } } - unset($_SESSION['role']); - unset($_SESSION['pseudo']); return null; } @@ -34,4 +32,12 @@ class AdminModel { return (isset($_SESSION['role']) && $_SESSION['role'] == 'admin'); } + + public static function deconnection(){ + $_SESSION['role'] = ""; + unset($_SESSION['role']); + $_SESSION['pseudo'] = ""; + unset($_SESSION['pseudo']); + header("Location: /~mapoint2/SAE/Php_RSS/fluxRSS/admin"); + } } \ No newline at end of file diff --git a/fluxRSS/templates/Connection.html b/fluxRSS/templates/Connection.html index a330795..4d25299 100755 --- a/fluxRSS/templates/Connection.html +++ b/fluxRSS/templates/Connection.html @@ -23,7 +23,7 @@ Nom - + @@ -41,7 +41,7 @@ - + Not a member? Go to Articles diff --git a/fluxRSS/templates/listArticle.html b/fluxRSS/templates/listArticle.html index b807901..e0e3f6c 100755 --- a/fluxRSS/templates/listArticle.html +++ b/fluxRSS/templates/listArticle.html @@ -14,8 +14,12 @@ {% endfor %}

{% endfor %} +user {% if not isAdmin %} - Connect + Connect +{% else %} + Vue admin +Déconnection {% endif %} \ No newline at end of file diff --git a/fluxRSS/templates/listArticleAdmin.html b/fluxRSS/templates/listArticleAdmin.html new file mode 100755 index 0000000..316ba60 --- /dev/null +++ b/fluxRSS/templates/listArticleAdmin.html @@ -0,0 +1,21 @@ + + + + + All Articles + + +admin +{% for value in dVue.data %} +

+ {% for article in value %} +

+ {{article}} +

+{% endfor %} +

+{% endfor %} +Vue user +Déconnection + + \ No newline at end of file