39 lines
1.0 KiB
PHP
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;
|
|
}
|
|
}
|