add auth and csrf-twig middleware
This commit is contained in:
parent
da3eeef750
commit
3f21ddeab1
2 changed files with 55 additions and 0 deletions
27
src/MiddleWare/AuthMiddleware.php
Normal file
27
src/MiddleWare/AuthMiddleware.php
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace FreightQuote\MiddleWare;
|
||||||
|
|
||||||
|
use Psr\Http\Server\MiddlewareInterface;
|
||||||
|
use Psr\Http\Server\RequestHandlerInterface as Handler;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
|
use Psr\Http\Message\ResponseInterface as Response;
|
||||||
|
use Slim\Psr7\Response as SlimResponse;
|
||||||
|
|
||||||
|
class AuthMiddleware implements MiddlewareInterface
|
||||||
|
{
|
||||||
|
public function process(Request $request, Handler $handler): Response
|
||||||
|
{
|
||||||
|
if (isset($_SESSION['user_id'])) {
|
||||||
|
return $handler->handle($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
$uri = $request->getUri()->getPath();
|
||||||
|
if ($uri !== '/login' && $uri !== '/logout') {
|
||||||
|
$_SESSION['intended'] = $uri;
|
||||||
|
}
|
||||||
|
$resp = new SlimResponse(302);
|
||||||
|
|
||||||
|
return $resp->withHeader('Location', '/login');
|
||||||
|
}
|
||||||
|
}
|
||||||
28
src/MiddleWare/CsrfToTwigMiddleware.php
Normal file
28
src/MiddleWare/CsrfToTwigMiddleware.php
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace FreightQuote\MiddleWare;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
|
use Psr\Http\Message\ResponseInterface as Response;
|
||||||
|
use Psr\Http\Server\RequestHandlerInterface as Handler;
|
||||||
|
use Psr\Http\Server\MiddlewareInterface;
|
||||||
|
use Slim\Views\Twig;
|
||||||
|
|
||||||
|
class CsrfToTwigMiddleware implements MiddlewareInterface
|
||||||
|
{
|
||||||
|
public function __construct(private Twig $twig) {}
|
||||||
|
|
||||||
|
public function process(Request $request, Handler $handler): Response
|
||||||
|
{
|
||||||
|
// These will be null on some requests (like first GET), so we guard it
|
||||||
|
$nameKey = $request->getAttribute('csrf_name');
|
||||||
|
$valueKey = $request->getAttribute('csrf_value');
|
||||||
|
|
||||||
|
$this->twig->getEnvironment()->addGlobal('csrf', [
|
||||||
|
'name' => $nameKey,
|
||||||
|
'value' => $valueKey,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $handler->handle($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue