From 72fb941a18ee15e6e921fa23faf051d99dc0da83 Mon Sep 17 00:00:00 2001 From: nox Date: Thu, 2 Jan 2020 22:27:28 +0100 Subject: [PATCH] =?UTF-8?q?Finalisation=20de=20l'affichage=20de=20l'utilis?= =?UTF-8?q?ateur=20connect=C3=A9=20en=20mode=20modal=20ou=20non=20modal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/connex.js | 18 +----- public/models/connexion.php | 3 - src/Account/AccountModule.php | 6 +- src/Admin/AdminModule.php | 4 +- src/Admin/DashboardUserAction.php | 2 +- src/Auth/Action/LoginAttemptAction.php | 17 ++++-- src/Framework/Auth/LoggedInMiddleware.php | 15 +++-- src/Framework/Auth/LoginModalMiddleware.php | 63 +++++++++++++++++++++ views/layout.twig | 10 ++-- 9 files changed, 99 insertions(+), 39 deletions(-) create mode 100644 src/Framework/Auth/LoginModalMiddleware.php diff --git a/public/js/connex.js b/public/js/connex.js index 23d2c5a..59ff434 100644 --- a/public/js/connex.js +++ b/public/js/connex.js @@ -9,28 +9,16 @@ function connexion(nom_connecte, mdp, chemin) { // Afficher l'avatar et le nom du connecté sur la barre d'état ou message d'erreur if (result.valide) { $("#bouton-connexion").css('display',"none"); - $("#avatar-user").css('display',"block"); + $("#avatar-user").css('display',"inline-block"); $("#avatar-user").html(''); $("#avatar-user").append(''); $("#avatar-user").append(''); - $("#user-connecte").css('display',"block"); - //$("#nom_connecte").append(''); + $("#user-connecte").css('display',"inline-block"); $("#contenu_bouton").html(''); $("#contenu_bouton").append(result.username); - //$("#nom_connecte").append(''); - //$("#nom_connecte").css('display',"block"); + $('#formulaire').attr('action', '/profil/user/'+result.username); $("#deconnexion").css('display',"block"); $("#inscription").css('display',"none"); - //alert('username='+result.username); - // die(); - - //$("#nom_connecte").html('test'); - // $("#nom_connecte").append(''); - // $("#nom_connecte").append(result.username); - // $("#nom_connecte").append(''); - //die(); - // On recharge la page pour tenir compte de la connexion de l'utilisateur - //window.location.reload(true); } else { $('.alert-danger').html(''); $(".alert-danger").css('display',"block"); diff --git a/public/models/connexion.php b/public/models/connexion.php index ed3a7ce..08a8220 100644 --- a/public/models/connexion.php +++ b/public/models/connexion.php @@ -15,9 +15,6 @@ try { $query->execute($params); $row = $query->fetch(PDO::FETCH_ASSOC); if (password_verify($_POST['mdp'],$row['password'])) { - //session_start(); - $_SESSION['user']=$row['username']; - $_SESSION['role']=$row['role']; echo '{"valide":true,"username":"'.$row['username'].'"}'; } else { echo '{"valide":false}'; diff --git a/src/Account/AccountModule.php b/src/Account/AccountModule.php index 490e62a..99eaf78 100644 --- a/src/Account/AccountModule.php +++ b/src/Account/AccountModule.php @@ -5,8 +5,8 @@ use App\Account\Action\AccountAction; use App\Account\Action\AccountEditAction; use App\Account\Action\ProfilAction; use App\Account\Action\SignupAction; -use App\Auth\Action\PasswordForgetAction; use Framework\Auth\LoggedInMiddleware; +use Framework\Auth\LoginModalMiddleware; use Framework\Module; use Framework\Renderer\RendererInterface; use Framework\Router; @@ -25,7 +25,7 @@ class AccountModule extends Module $router->post('/inscription', SignupAction::class); $router->get('/mon-profil', [LoggedInMiddleware::class, AccountAction::class], 'account'); $router->post('/mon-profil', [LoggedInMiddleware::class, AccountEditAction::class]); - $router->get('/profil/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, ProfilAction::class], 'account.profil'); - $router->post('/profil/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, ProfilAction::class]); + $router->get('/profil/user/{user:[a-zA-Z\-0-9]+}', [LoginModalMiddleware::class, ProfilAction::class], 'account.profil'); + $router->post('/profil/user/{user:[a-zA-Z\-0-9]+}', [LoginModalMiddleware::class, ProfilAction::class]); } } diff --git a/src/Admin/AdminModule.php b/src/Admin/AdminModule.php index 4e155cb..b8cdc0a 100644 --- a/src/Admin/AdminModule.php +++ b/src/Admin/AdminModule.php @@ -23,8 +23,8 @@ class AdminModule extends Module string $prefix ) { - $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('/dashboard/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardAction::class], 'dashboard'); + $router->get('/dashboard/details/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardUserAction::class], 'dashboard.user'); $router->get('/activation', [LoggedInMiddleware::class, ActiveAction::class], 'account.active'); $router->post('/activation', ActiveAction::class); $router->get('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class], 'account.user'); diff --git a/src/Admin/DashboardUserAction.php b/src/Admin/DashboardUserAction.php index fadfd1d..894618b 100644 --- a/src/Admin/DashboardUserAction.php +++ b/src/Admin/DashboardUserAction.php @@ -53,7 +53,7 @@ class DashboardUserAction $liste_users_suivi = $this->userTableAdmin->findUsers('3'); $url_part = explode('/',$_SERVER['REQUEST_URI']); - $user_affiche = $url_part[2]; + $user_affiche = $url_part[3]; $user = $this->userTable->findBy('username', $user_affiche); $id_affiche = $user->id; $actif_affiche = $user->actif; diff --git a/src/Auth/Action/LoginAttemptAction.php b/src/Auth/Action/LoginAttemptAction.php index 11d59d5..ee5e30c 100644 --- a/src/Auth/Action/LoginAttemptAction.php +++ b/src/Auth/Action/LoginAttemptAction.php @@ -54,7 +54,18 @@ class LoginAttemptAction { $params = $request->getParsedBody(); $user = $this->auth->login($params['username'], $params['password']); + if ($user) { + $this->test_user($user, $params); + return $this->renderer->render('@gmarche/index'); + } else { + (new FlashService($this->session))->error('Identifiant ou mot de passe incorrect'); + return $this->redirect('auth.login'); + } + } + + public function test_user($user, $params) { + $role = $this->userTable->findBy('username', $params['username'])->role; $path = $this->session->get('auth.redirect') ?: $this->router->generateUri('gmarche.index'); $this->session->delete('auth.redirect'); @@ -71,11 +82,7 @@ class LoginAttemptAction } //$this->renderer->addGlobal('user', $user); //$this->renderer->addGlobal('role', $role); - return $this->renderer->render('@gmarche/index'); - } else { - (new FlashService($this->session))->error('Identifiant ou mot de passe incorrect'); - return $this->redirect('auth.login'); - } + } private function show($role) { diff --git a/src/Framework/Auth/LoggedInMiddleware.php b/src/Framework/Auth/LoggedInMiddleware.php index 5274151..36658ca 100644 --- a/src/Framework/Auth/LoggedInMiddleware.php +++ b/src/Framework/Auth/LoggedInMiddleware.php @@ -1,6 +1,7 @@ auth = $auth; $this->router = $router; + $this->userTable = $userTable; $this->session = $session; } public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface { - $user = $this->auth->getUser(); + $url_part = explode('/',$request->getServerParams()['HTTP_REFERER'] ?? '/'); + $username = $url_part[5]; + if (is_null($username)) { + $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $request->getAttribute('user')); + } else { + $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $username); + } if (is_null($user)) { - //throw new ForbiddenException(); - //return $this->redirect('auth.login'); - //$this->session->set('auth.login', $request->getUri()->getPath()); (new FlashService($this->session))->error('Vous devez vous connecter pour accéder à cette page'); return new RedirectResponse($this->router->generateUri('auth.login')); } diff --git a/src/Framework/Auth/LoginModalMiddleware.php b/src/Framework/Auth/LoginModalMiddleware.php new file mode 100644 index 0000000..2edf28d --- /dev/null +++ b/src/Framework/Auth/LoginModalMiddleware.php @@ -0,0 +1,63 @@ +auth = $auth; + $this->router = $router; + $this->userTable = $userTable; + $this->session = $session; + //$this->session->set('username','nox'); + //$this->session->set('passage_login_modal',"fait"); + //var_dump($this->session); + // die(); + } + + public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface + { + $url_part = explode('/',$request->getServerParams()['PHP_SELF'] ?? '/'); + $username = $url_part[4]; + if (is_null($username)) { + $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $request->getAttribute('user')); + } else { + $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $username); + } + + if (is_null($user)) { + (new FlashService($this->session))->error('Vous devez vous connecter pour accéder à cette page'); + return new RedirectResponse($this->router->generateUri('auth.login')); + } else { + $this->session->set('username',$user->username); + $this->session->set('passage_login_modal',"fait"); + } + return $delegate->process($request->withAttribute('user', $user)); + } +} diff --git a/views/layout.twig b/views/layout.twig index f8fa84f..e27e096 100644 --- a/views/layout.twig +++ b/views/layout.twig @@ -48,7 +48,7 @@ {% if (affiche_role()==0 or affiche_role()==1 or affiche_role()==2) and affiche_username()!='' %} {% endif %}