29 lines
912 B
PHP
29 lines
912 B
PHP
<?php
|
|
namespace ProVM\NotariaRaby\Common\Middleware;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Psr\Http\Server\RequestHandlerInterface as Handler;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Psr\Container\ContainerInterface as Container;
|
|
use ProVM\NotariaRaby\Common\Service\Login;
|
|
|
|
class Auth {
|
|
protected $users;
|
|
public function __construct(array $users, string $login_url, Login $service) {
|
|
$this->users = $users;
|
|
$this->login_url = $login_url;
|
|
$this->login = $service;
|
|
}
|
|
public function __invoke(Request $request, Handler $handler): Response {
|
|
$response = $handler->handle($request);
|
|
|
|
$is_logged_in = $this->login->checkAuth($request);
|
|
if (!$is_logged_in and $request->getRequestTarget() != $this->login_url) {
|
|
return $response
|
|
->withHeader('Location', $this->login_url)
|
|
->withStatus(301);
|
|
}
|
|
return $response;
|
|
}
|
|
}
|