Permet la déconnexion d'utilisateurs
This commit is contained in:
@@ -17,4 +17,7 @@ $router->get('/^news\/(?<id>\d+)$/', [$user, 'viewPost']);
|
|||||||
$router->get('/^comments\/(?<id>[\w-]+)$/', [$user, 'viewPostComments']);
|
$router->get('/^comments\/(?<id>[\w-]+)$/', [$user, 'viewPostComments']);
|
||||||
$router->match('/^login$/', [$security, 'login']);
|
$router->match('/^login$/', [$security, 'login']);
|
||||||
$router->match('/^register$/', [$security, 'register']);
|
$router->match('/^register$/', [$security, 'register']);
|
||||||
$router->run(new \Silex\DI\DI($router))->render($router, __DIR__ . '/../' . VIEW_PATH);
|
$router->match('/^logout$/', [$security, 'logout']);
|
||||||
|
|
||||||
|
$di = new \Silex\DI\DI($router);
|
||||||
|
$router->run($di)->render($di, __DIR__ . '/../' . VIEW_PATH);
|
||||||
|
@@ -16,9 +16,7 @@ class SecurityController
|
|||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
$success = $di->getSecurity()->initLogin($_POST['login'], $_POST['password']);
|
$success = $di->getSecurity()->initLogin($_POST['login'], $_POST['password']);
|
||||||
if ($success) {
|
if ($success) {
|
||||||
http_response_code(303);
|
HttpResponse::redirect($di->getRouter()->url(''));
|
||||||
header('Location: ' . $di->getRouter()->url(''));
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
$fail = !$success;
|
$fail = !$success;
|
||||||
}
|
}
|
||||||
@@ -31,12 +29,16 @@ class SecurityController
|
|||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
$user = $di->getSecurity()->register(User::fromRawPassword($_POST['login'], $_POST['password']));
|
$user = $di->getSecurity()->register(User::fromRawPassword($_POST['login'], $_POST['password']));
|
||||||
if ($user !== null) {
|
if ($user !== null) {
|
||||||
http_response_code(303);
|
HttpResponse::redirect($di->getRouter()->url(''));
|
||||||
header('Location: ' . $di->getRouter()->url(''));
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
$fail = $user === null;
|
$fail = $user === null;
|
||||||
}
|
}
|
||||||
return HttpResponse::found('register', ['fail' => $fail]);
|
return HttpResponse::found('register', ['fail' => $fail]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function logout(DI $di): void
|
||||||
|
{
|
||||||
|
$di->getSecurity()->logout();
|
||||||
|
HttpResponse::redirect($di->getRouter()->url(''));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Silex\Http;
|
namespace Silex\Http;
|
||||||
|
|
||||||
use Silex\Router\Router;
|
use Silex\DI\DI;
|
||||||
|
|
||||||
class HttpResponse
|
class HttpResponse
|
||||||
{
|
{
|
||||||
@@ -21,13 +21,22 @@ class HttpResponse
|
|||||||
$this->viewParams = $viewParams;
|
$this->viewParams = $viewParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function redirect(string $url): void
|
||||||
|
{
|
||||||
|
http_response_code(303);
|
||||||
|
header('Location: ' . $url);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
public static function found(string $viewPath, array $viewParams = []): HttpResponse
|
public static function found(string $viewPath, array $viewParams = []): HttpResponse
|
||||||
{
|
{
|
||||||
return new HttpResponse(200, $viewPath, $viewParams);
|
return new HttpResponse(200, $viewPath, $viewParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render(Router $router, string $viewBasePath)
|
public function render(DI $di, string $viewBasePath)
|
||||||
{
|
{
|
||||||
|
$router = $di->getRouter();
|
||||||
|
$security = $di->getSecurity();
|
||||||
$params = $this->viewParams;
|
$params = $this->viewParams;
|
||||||
ob_start();
|
ob_start();
|
||||||
require $viewBasePath . '/' . $this->viewPath . '.php';
|
require $viewBasePath . '/' . $this->viewPath . '.php';
|
||||||
|
@@ -10,16 +10,23 @@
|
|||||||
<nav class="navbar" role="navigation" aria-label="main navigation">
|
<nav class="navbar" role="navigation" aria-label="main navigation">
|
||||||
<div id="navbarBasicExample" class="navbar-menu">
|
<div id="navbarBasicExample" class="navbar-menu">
|
||||||
<div class="navbar-start">
|
<div class="navbar-start">
|
||||||
<a class="navbar-item">Home</a>
|
<a class="navbar-item" href="<?= $router->url('') ?>">Home</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navbar-end">
|
<div class="navbar-end">
|
||||||
<div class="navbar-item">
|
<div class="navbar-item">
|
||||||
|
<?php if ($security->getCurrentUser() !== null) : ?>
|
||||||
|
<p class="navbar-item"><?= $security->getCurrentUser()->getLogin() ?></p>
|
||||||
|
<?php endif ?>
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a class="button is-primary" href="<?= $router->url('register') ?>">
|
<?php if ($security->getCurrentUser() === null): ?>
|
||||||
<strong>Sign up</strong>
|
<a class="button is-primary" href="<?= $router->url('register') ?>">
|
||||||
</a>
|
<strong>Sign up</strong>
|
||||||
<a class="button is-light" href="<?= $router->url('login') ?>">Log in</a>
|
</a>
|
||||||
|
<a class="button is-light" href="<?= $router->url('login') ?>">Log in</a>
|
||||||
|
<?php else : ?>
|
||||||
|
<a class="button is-light" href="<?= $router->url('logout') ?>">Log out</a>
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user