mirror of
https://github.com/nextcloud/all-in-one.git
synced 2025-12-21 06:56:57 +00:00
42 lines
1.1 KiB
PHP
42 lines
1.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace AIO\Middleware;
|
||
|
|
|
||
|
|
use AIO\Auth\AuthManager;
|
||
|
|
use GuzzleHttp\Psr7\Response;
|
||
|
|
use Psr\Http\Message\ResponseInterface;
|
||
|
|
use Psr\Http\Message\ServerRequestInterface;
|
||
|
|
use Psr\Http\Server\RequestHandlerInterface;
|
||
|
|
|
||
|
|
class AuthMiddleware
|
||
|
|
{
|
||
|
|
private AuthManager $authManager;
|
||
|
|
|
||
|
|
public function __construct(AuthManager $authManager) {
|
||
|
|
$this->authManager = $authManager;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function __invoke(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||
|
|
{
|
||
|
|
$publicRoutes = [
|
||
|
|
'/api/auth/login',
|
||
|
|
'/api/auth/getlogin',
|
||
|
|
'/login',
|
||
|
|
'/setup',
|
||
|
|
'/',
|
||
|
|
];
|
||
|
|
|
||
|
|
if(!in_array($request->getUri()->getPath(), $publicRoutes)) {
|
||
|
|
if(!$this->authManager->IsAuthenticated()) {
|
||
|
|
$response = new Response();
|
||
|
|
return $response
|
||
|
|
->withHeader('Location', '/')
|
||
|
|
->withStatus(302);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$response = $handler->handle($request);
|
||
|
|
return $response;
|
||
|
|
}
|
||
|
|
}
|