* @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2 * @category Stud.IP * @since 6.0 */ namespace Studip\Middleware; use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; use Studip\Authentication\Manager; final class AuthenticationMiddleware implements MiddlewareInterface { public function __construct(private Manager $auth_manager, private ResponseFactoryInterface $response_factory) { } public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { if ($this->auth_manager->start()) { return $handler->handle($request); } else { if (!match_route('dispatch.php/start')) { $_SESSION['redirect_after_login'] = \Request::url(); } $response = $this->response_factory->createResponse(302); return $response->withHeader('Location', \URLHelper::getURL('dispatch.php/login')); } } }