summaryrefslogtreecommitdiff
path: root/src/Http/RequestServiceProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Http/RequestServiceProvider.php')
-rw-r--r--src/Http/RequestServiceProvider.php28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Http/RequestServiceProvider.php b/src/Http/RequestServiceProvider.php
index 1bcdf852..37f8c604 100644
--- a/src/Http/RequestServiceProvider.php
+++ b/src/Http/RequestServiceProvider.php
@@ -9,9 +9,37 @@ class RequestServiceProvider extends ServiceProvider
{
public function register()
{
+ $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']);
+ $this->setTrustedProxies($request, $trustedProxies);
+
$this->app->instance(Request::class, $request);
$this->app->instance(SymfonyRequest::class, $request);
$this->app->instance('request', $request);
}
+
+ /**
+ * 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);
+ }
}