From bf65d62297a8adf353f823196c182af249351870 Mon Sep 17 00:00:00 2001 From: nox Date: Mon, 23 Dec 2019 02:09:54 +0100 Subject: [PATCH] Gestion du statut actif/inactif des users - Ajout des sessions pour twig --- config/apply.php | 4 ++- public/models/connexion.php | 2 +- public/models/readRecords.php | 2 +- public/models/readRecords2.php | 2 +- src/Account/Action/ActiveAction.php | 30 +++++++++++++++---- src/Account/Action/ProfilAction.php | 2 +- src/Admin/AdminModule.php | 4 +-- src/Admin/DashboardAction.php | 29 ++++++++++++------- src/Admin/DashboardUserAction.php | 21 ++++---------- src/Admin/Table/UserTable.php | 16 +++++++++-- src/Admin/config.php | 2 -- src/Admin/views/dashboard.twig | 21 ++++++++------ src/Admin/views/dashboard_user.twig | 24 ++++++++++------ src/Admin/views/layout.twig | 7 +++-- src/Auth/Action/LoginAttemptAction.php | 30 +++++++++++++++---- src/Auth/Action/LogoutAction.php | 9 ++++-- src/Contact/ContactAction.php | 2 +- src/Contact/contact.twig | 1 - src/Framework/Auth/LoggedInMiddleware.php | 21 +++++++++----- src/Framework/Database/Query.php | 2 +- src/Framework/Database/Table.php | 1 + src/Framework/Twig/UrlExtension.php | 4 +-- src/Framework/Twig/VariableExtension.php | 46 ++++++++++++++++++++++++++++++ src/Gmarche/Actions/AntenneShowAction.php | 2 +- src/Gmarche/Actions/RegionIndexAction.php | 41 +++++++++++++++++--------- src/Gmarche/GmarcheModule.php | 4 ++- src/Gmarche/views/index.twig | 24 +++++++++------- src/Product/Actions/ProductIndexAction.php | 2 +- src/Product/Actions/RechIndexAction.php | 2 +- views/layout.twig | 11 +++---- 30 files changed, 250 insertions(+), 118 deletions(-) create mode 100644 src/Framework/Twig/VariableExtension.php diff --git a/config/apply.php b/config/apply.php index fe4745c..cba9769 100644 --- a/config/apply.php +++ b/config/apply.php @@ -2,6 +2,7 @@ include 'config.php'; use App\Framework\Twig\UrlExtension; +use App\Framework\Twig\VariableExtension; use Framework\Middleware\CsrfMiddleware; use Framework\Renderer\RendererInterface; use Framework\Renderer\TwigRendererFactory; @@ -29,7 +30,8 @@ return [ \DI\get(FlashExtension::class), \DI\get(FormExtension::class), \DI\get(CsrfExtension::class), - \DI\get(UrlExtension::class) + \DI\get(UrlExtension::class), + \DI\get(VariableExtension::class) ], SessionInterface::class => \DI\object(PHPSession::class), CsrfMiddleware::class => \DI\object()->constructor(\DI\get(SessionInterface::class)), diff --git a/public/models/connexion.php b/public/models/connexion.php index 91816eb..ed3a7ce 100644 --- a/public/models/connexion.php +++ b/public/models/connexion.php @@ -15,7 +15,7 @@ try { $query->execute($params); $row = $query->fetch(PDO::FETCH_ASSOC); if (password_verify($_POST['mdp'],$row['password'])) { - session_start(); + //session_start(); $_SESSION['user']=$row['username']; $_SESSION['role']=$row['role']; echo '{"valide":true,"username":"'.$row['username'].'"}'; diff --git a/public/models/readRecords.php b/public/models/readRecords.php index f679ae9..76ae9c6 100644 --- a/public/models/readRecords.php +++ b/public/models/readRecords.php @@ -1,5 +1,5 @@ renderer = $renderer; $this->auth = $auth; $this->flashService = $flashService; + $this->router = $router; $this->userTable = $userTable; } public function __invoke(ServerRequestInterface $request) { - $user = $this->auth->getUser(); - var_dump($user); - die(); + // $user = $this->auth->getUser(); $params = $request->getParsedBody(); + + $url_part = explode('/',$_SERVER['HTTP_REFERER']); + //var_dump($url_part); + //var_dump($_SERVER['HTTP_REFERER']); + $chemin = $url_part[3].'/'.$url_part[4]; + + //echo "

"; + //echo "chemin=".$chemin; + //die(); + //echo "user_id2=".$params['id']; + //die(); + + $validator = (new Validator($params)) ->required('username', 'actif'); if ($validator->isValid()) { + if ($params['actif']) { + $params['actif'] = '0'; + } else { + $params['actif'] = '1'; + } $userParams = [ 'username' => $params['username'], 'actif' => $params['actif'] ]; - $this->userTable->update($user->id, $userParams); + $this->userTable->update($params['id'], $userParams); if (!$params['actif']) { $this->flashService->success("L'utilisateur ".$params['username']." a bien été désactivé"); } else { $this->flashService->success("L'utilisateur ".$params['username']." a bien été réactivé"); } - return new RedirectResponse($request->getUri()->getPath()); + return new RedirectResponse($chemin); } $errors = $validator->getErrors(); return $this->renderer->render('@account/account', compact('user', 'errors')); diff --git a/src/Account/Action/ProfilAction.php b/src/Account/Action/ProfilAction.php index cbc3f18..6b83446 100644 --- a/src/Account/Action/ProfilAction.php +++ b/src/Account/Action/ProfilAction.php @@ -36,7 +36,7 @@ class ProfilAction { /* Transmission du nom et de l'avatar de l'utilisateur connecté à la vue Twig */ if(!isset($_SESSION)) { - session_start(); + //session_start(); } if (isset($_SESSION['user'])) { $nom_user = $_SESSION['user']; diff --git a/src/Admin/AdminModule.php b/src/Admin/AdminModule.php index 03b3884..ae50433 100644 --- a/src/Admin/AdminModule.php +++ b/src/Admin/AdminModule.php @@ -2,7 +2,6 @@ namespace App\Admin; -use App\Account\Action\AccountAction; use App\Account\Action\ActiveAction; use App\Auth\Action\PasswordForgetAction; use Framework\Auth\LoggedInMiddleware; @@ -22,13 +21,14 @@ class AdminModule extends Module string $prefix ) { - $router->get('/dashboard', DashboardAction::class, 'dashboard'); + $router->get('/dashboard', [LoggedInMiddleware::class, DashboardAction::class], 'dashboard'); $router->get('/dashboard/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardUserAction::class], 'dashboard.user'); $router->get('/activation', ActiveAction::class, 'account.active'); $router->post('/activation', ActiveAction::class); $router->any('/password_reinit', PasswordForgetAction::class, 'auth.password'); if ($renderer instanceof TwigRenderer) { $renderer->getTwig()->addExtension($adminTwigExtension); + // $renderer->getTwig()->addExtension($variableExtension); } } } diff --git a/src/Admin/DashboardAction.php b/src/Admin/DashboardAction.php index 006d610..9f388c5 100644 --- a/src/Admin/DashboardAction.php +++ b/src/Admin/DashboardAction.php @@ -4,6 +4,7 @@ namespace App\Admin; use App\Admin\Table\UserTable; use App\Gmarche\Table\AntenneTable; use Framework\Renderer\RendererInterface; +use Framework\Session\SessionInterface; use Psr\Http\Message\ServerRequestInterface; class DashboardAction @@ -18,7 +19,10 @@ class DashboardAction */ private $antenneTable; - + /** + * @var SessionInterface + */ + private $session; /** * @var UserTable */ @@ -27,10 +31,12 @@ class DashboardAction public function __construct( RendererInterface $renderer, AntenneTable $antenneTable, + SessionInterface $session, UserTable $userTable) { $this->renderer = $renderer; $this->antenneTable = $antenneTable; + $this->session = $session; $this->userTable = $userTable; } @@ -41,25 +47,26 @@ class DashboardAction public function __invoke(ServerRequestInterface $request) { if ($request->getMethod() === 'GET') { - + $role = $this->session->get('role', []); + $username = $this->session->get('username', []); $this->renderer->addPath('admin', __DIR__ . '/views'); $page = $params['p'] ?? 1; // Si la page n'est pas définie, on l'initialise à 1 $liste_adminGeneral = $this->userTable->findAdminUsers('1'); $liste_adminAntenne = $this->userTable->findAdminUsers('2'); $liste_users_suivi = $this->userTable->findUsers('3'); $listeAntennes = $this->antenneTable->findAllAntennes(); - if (!isset($_SESSION)) { - session_start(); - } - if (isset($_SESSION['user'])) { - $nom_user = $_SESSION['user']; - $role = $_SESSION['role']; + if ($this->session->get('username')) { + $this->session->delete('role'); + $this->session->delete('username'); + $this->session->set('role',$role); + $this->session->set('username',$username); } else { - $nom_user = ''; - $role = '3'; + $this->session->set('username',$username); + $this->session->set('role',$role); } + return $this->renderer->render('@admin/dashboard', - compact('nom_user','role', 'liste_adminGeneral', 'liste_users_suivi', + compact('username','liste_adminGeneral', 'liste_users_suivi', 'liste_adminAntenne', 'listeAntennes')); } } diff --git a/src/Admin/DashboardUserAction.php b/src/Admin/DashboardUserAction.php index 69e34fb..52aba9c 100644 --- a/src/Admin/DashboardUserAction.php +++ b/src/Admin/DashboardUserAction.php @@ -52,25 +52,16 @@ class DashboardUserAction $this->renderer->addPath('admin', __DIR__ . '/views'); $liste_users_suivi = $this->userTableAdmin->findUsers('3'); - $username = $request->getAttribute('user'); + $url_part = explode('/',$_SERVER['REQUEST_URI']); + $user_affiche = $url_part[2]; - $profil_user = $this->userTable->findBy('username', $username); - // var_dump($profil_user); - // die(); + $user = $this->userTable->findBy('username', $user_affiche); + $id_affiche = $user->id; + $actif_affiche = $user->actif; $listeAntennes = $this->antenneTable->findAllAntennes(); - if (!isset($_SESSION)) { - session_start(); - } - if (isset($_SESSION['user'])) { - $nom_user = $_SESSION['user']; - $role = $_SESSION['role']; - } else { - $nom_user = ''; - $role = '3'; - } return $this->renderer->render('@admin/dashboard_user', - compact('nom_user','role','username','profil_user','liste_users_suivi','listeAntennes')); + compact('user_affiche','id_affiche', 'actif_affiche', 'user','liste_users_suivi','listeAntennes')); } } } diff --git a/src/Admin/Table/UserTable.php b/src/Admin/Table/UserTable.php index bca7486..c09b85b 100644 --- a/src/Admin/Table/UserTable.php +++ b/src/Admin/Table/UserTable.php @@ -25,6 +25,7 @@ class UserTable extends Table } return $list; } + public function findAntennebyId(int $id_antenne): Query { $antenne = new AntenneTable($this->pdo); @@ -32,13 +33,15 @@ class UserTable extends Table ->select('a.name as nameAntenne') ->where("a.id = $id_antenne"); } + public function findUsers($role): Query { return $this->makeQuery() ->select('u.*') - ->where("u.role = '".$role."'") + ->where("u.role = '" . $role . "'") ->order('u.username ASC'); } + /*public function findUsersSuivi($role): Query { $antenne = new AntenneTable($this->pdo); @@ -55,11 +58,18 @@ class UserTable extends Table ->where("u.role = $role") ->order('u.username ASC'); } + public function findRole($username): Query { - return $this->makeQuery() + return $this->makeQuery() ->select('u.role') - ->where("u.username = $username"); + ->where("u.username = '" . $username . "'"); } + public function findRole2($username) + { + return $this->pdo + ->query("SELECT role FROM {$this->table} WHERE username='".$username."'") + ->fetch(); + } } diff --git a/src/Admin/config.php b/src/Admin/config.php index 511c1c4..f1de900 100644 --- a/src/Admin/config.php +++ b/src/Admin/config.php @@ -1,12 +1,10 @@ '/admin', 'admin.widgets' => [], \App\Admin\AdminTwigExtension::class => \DI\object()->constructor(\DI\get('admin.widgets')), AdminModule::class => \DI\object()->constructorParameter('prefix', \DI\get('admin.prefix')) - //DashboardAction::class => \DI\object()->constructorParameter('widgets', \DI\get('admin.widgets')) ]; diff --git a/src/Admin/views/dashboard.twig b/src/Admin/views/dashboard.twig index 04d9a93..148525e 100644 --- a/src/Admin/views/dashboard.twig +++ b/src/Admin/views/dashboard.twig @@ -7,14 +7,14 @@

Tableau de bord -

- {% if role == '0' %} Super Admin{% endif %} - {% if role == '1' %} Admin général{% endif %} - {% if role == '2' %} Admin Antenne{% endif %} + {% if affiche_role() == 0 %} Super Admin{% endif %} + {% if affiche_role() == 1 %} Admin général{% endif %} + {% if affiche_role() == 2 %} Admin Antenne{% endif %}

- {% if role == '0' %} + {% if affiche_role() == 0 %}

Liste des admins généraux

{% endif %}

- {% if (role == '0' or role == '1') %} + {% if (affiche_role() == 0 or affiche_role() == 1) %}

Liste des admins Antenne

{% endif %}

- {% if (role == '0' or role == '1' or role == '2') %} + {% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %}

Liste des régions/antennes

{% endif %}

- {% if (role == '0' or role == '1' or role == '2') %} + {% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %}

Liste des utilisateurs

{% endif %}

- {% if (role == '0' or role == '1') %} + {% if (affiche_role()== 0 or affiche_role()== 1) %}

Gestion d'une antenne

{% endif %}

- {% if (role == '0' or role == '1' or role == '2') %} + {% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %}

Gestion d'un G-Marché

{% endif %}
diff --git a/src/Admin/views/dashboard_user.twig b/src/Admin/views/dashboard_user.twig index 8bd3406..700128b 100644 --- a/src/Admin/views/dashboard_user.twig +++ b/src/Admin/views/dashboard_user.twig @@ -5,14 +5,20 @@ {% block body %}
-

Tableau de bord User - {{ username }}

+

Tableau de bord User - {{ user_affiche }}

    - -
    {{ field('actif', false, "", {type: 'hidden'}) }} - {{ field('username', username, "", {type: 'hidden'}) }}
    + {% if actif_affiche %} + + {% else %} + + {% endif %} +
    {{ field('actif', actif_affiche, "", {type: 'hidden'}) }} + {{ field('username', user_affiche, "", {type: 'hidden'}) }} + {{ field('id', id_affiche, "", {type: 'hidden'}) }} +
@@ -22,10 +28,10 @@
- {{ field('firstname', profil_user.firstname, 'Prénom') }} - {{ field('lastname', profil_user.lastname, 'Nom') }} - Adresse mail {{ profil_user.email }}

- Clé publique {{ profil_user.pubkey }} + {{ field('firstname', user.firstname, 'Prénom') }} + {{ field('lastname', user.lastname, 'Nom') }} + Adresse mail {{ user.email }}

+ Clé publique {{ user.pubkey }}

@@ -43,7 +49,7 @@
  • - {% set antenne_suivie = profil_user.suiviantenne|split('|') %} + {% set antenne_suivie = user.suiviantenne|split('|') %} {% for antenne in antenne_suivie %} {% for item in listeAntennes %} {% if (item.id == antenne) %} diff --git a/src/Admin/views/layout.twig b/src/Admin/views/layout.twig index 440c29b..48000bf 100644 --- a/src/Admin/views/layout.twig +++ b/src/Admin/views/layout.twig @@ -22,10 +22,13 @@
+