engelsystem/src/Http/RequestServiceProvider.php

46 lines
1.3 KiB
PHP
Raw Normal View History

<?php
namespace Engelsystem\Http;
use Engelsystem\Container\ServiceProvider;
2018-09-02 02:09:56 +02:00
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
class RequestServiceProvider extends ServiceProvider
{
public function register()
{
2018-08-13 16:30:27 +02:00
$config = $this->app->get('config');
$trustedProxies = $config->get('trusted_proxies', []);
if (!is_array($trustedProxies)) {
$trustedProxies = empty($trustedProxies) ? [] : explode(',', preg_replace('~\s+~', '', $trustedProxies));
}
/** @var Request $request */
$request = $this->app->call([Request::class, 'createFromGlobals']);
2018-08-13 16:30:27 +02:00
$this->setTrustedProxies($request, $trustedProxies);
2018-09-23 19:13:19 +02:00
2018-09-02 02:09:56 +02:00
$this->app->instance(Request::class, $request);
$this->app->instance(SymfonyRequest::class, $request);
$this->app->instance('request', $request);
}
2018-08-13 16:30:27 +02:00
/**
* Set the trusted Proxies
*
* Required for unit tests (static methods can't be mocked)
*
* @param Request $request
* @param array $proxies
* @param int $trustedHeadersSet
* @codeCoverageIgnore
*/
protected function setTrustedProxies(
$request,
$proxies,
$trustedHeadersSet = Request::HEADER_FORWARDED | Request::HEADER_X_FORWARDED_TRAEFIK
2018-08-13 16:30:27 +02:00
) {
$request->setTrustedProxies($proxies, $trustedHeadersSet);
}
}