Files
lean/skeleton/src/Middleware/Authentication.php
T

39 lines
1.0 KiB
PHP

<?php
namespace %NAMESPACE%\Middleware;
use Psr\Http\Server\{ RequestHandlerInterface, MiddlewareInterface };
use Psr\Http\Message\{ ResponseInterface, ServerRequestInterface };
use Storage\Session;
class Authentication implements MiddlewareInterface {
public Session $session;
public string $sessionUserVariable = 'user';
public ResponseInterface $loginRedirect;
public function __construct(ResponseInterface $loginRedirect, Session $session)
{
$this->loginRedirect = $loginRedirect;
$this->session = $session;
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface
{
$user = $this->session->get( $this->sessionUserVariable() );
if ( ! $user ) {
return $this->loginRedirect;
}
return $handler->handle($request);
}
public function sessionUserVariable(?string $set = null) : string
{
return $set !== null ? $this->sessionUserVariable = $set : $this->sessionUserVariable;
}
}