Finalisation de l'affichage de l'utilisateur connecté en mode modal ou non modal

This commit is contained in:
nox 2020-01-02 22:27:28 +01:00
parent 8c32377738
commit 72fb941a18
9 changed files with 99 additions and 39 deletions

View File

@ -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('<span><img src="/avatar_user.png" width="22" height="22" />');
$("#avatar-user").append('</span>');
$("#user-connecte").css('display',"block");
//$("#nom_connecte").append('<span>');
$("#user-connecte").css('display',"inline-block");
$("#contenu_bouton").html('');
$("#contenu_bouton").append(result.username);
//$("#nom_connecte").append('</span>');
//$("#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('<span>');
// $("#nom_connecte").append(result.username);
// $("#nom_connecte").append('</span>');
//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");

View File

@ -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}';

View File

@ -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]);
}
}

View File

@ -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');

View File

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

View File

@ -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)
{

View File

@ -1,6 +1,7 @@
<?php
namespace Framework\Auth;
error_reporting(E_ALL & ~E_NOTICE);
use App\Auth\UserTable;
use Framework\Auth;
use Framework\Response\RedirectResponse;
use Framework\Router;
@ -27,21 +28,25 @@ class LoggedInMiddleware implements MiddlewareInterface
*/
private $session;
public function __construct(Auth $auth, Router $router, SessionInterface $session)
public function __construct(Auth $auth, Router $router, UserTable $userTable, SessionInterface $session)
{
$this->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'));
}

View File

@ -0,0 +1,63 @@
<?php
namespace Framework\Auth;
error_reporting(E_ALL & ~E_NOTICE);
use App\Auth\UserTable;
use Framework\Auth;
use Framework\Response\RedirectResponse;
use Framework\Router;
use Framework\Session\FlashService;
use Framework\Session\SessionInterface;
use Interop\Http\ServerMiddleware\DelegateInterface;
use Interop\Http\ServerMiddleware\MiddlewareInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class LoginModalMiddleware implements MiddlewareInterface
{
/**
* @var Auth
*/
private $auth;
/**
* @var Router
*/
private $router;
/**
* @var SessionInterface
*/
private $session;
public function __construct(Auth $auth, Router $router, UserTable $userTable, SessionInterface $session)
{
$this->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));
}
}

View File

@ -48,7 +48,7 @@
{% if (affiche_role()==0 or affiche_role()==1 or affiche_role()==2) and affiche_username()!='' %}
<li class="nav-item">
<a class="nav-link {% if explodeUrl()[1]=='dashboard' %} active{% endif %}" style="font-size:14px;"
href="{{ path('dashboard') }}">Administration</a>
href="{{ path('dashboard',{user:affiche_username()}) }}">Administration</a>
</li>
{% endif %}
<li class="nav-item">
@ -75,11 +75,11 @@
<button class="btn btn-danger" style="margin-left: 7px; font-size:14px;">Se déconnecter</button>
</form>
{% else %}
<form method="post" style="margin-top:5px;" action="{{ path('account.profil',{user:'nox'}) }}">
<div class="nav-item" id="avatar-user" style="display:none;padding-top:0.5rem;margin-right:0.4rem;">
<form id="formulaire" method="post" style="margin-top:5px;" action="{{ path('account.profil',{user:session.username}) }}">
<div class="nav-item" id="avatar-user" style="display:none;padding-top:0.1rem;margin-right:0.4rem;">
</div>
<div class="nav-item" id="user-connecte" style="display:none;padding-top:0.4rem;">
<button style="color:white; font-size: 14px;" class="btn-primary" data-toggle="modal" data-target="#connexion_modal">
<div class="nav-item" id="user-connecte" style="display:none;padding-top:0.1rem;">
<button style="color:white; font-size: 14px;" class="btn-primary">
<span id="contenu_bouton"></span>
</button>
</div>