2017-11-01 14:47:09 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Engelsystem\Http;
|
|
|
|
|
|
|
|
use Engelsystem\Container\ServiceProvider;
|
2018-09-02 02:09:56 +02:00
|
|
|
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
|
2017-11-01 14:47:09 +01:00
|
|
|
|
|
|
|
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 */
|
2017-11-01 14:47:09 +01:00
|
|
|
$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);
|
2017-11-01 14:47:09 +01:00
|
|
|
$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_ALL
|
|
|
|
) {
|
|
|
|
$request->setTrustedProxies($proxies, $trustedHeadersSet);
|
|
|
|
}
|
2017-11-01 14:47:09 +01:00
|
|
|
}
|