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

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