From 0af254c2dbc136a6ef45b68fca04680c765fc44a Mon Sep 17 00:00:00 2001 From: Dmytro Dzubenko Date: Thu, 10 Nov 2016 18:55:26 +0200 Subject: [PATCH 1/3] Add php native authorization headers --- Bridges/HttpKernel.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Bridges/HttpKernel.php b/Bridges/HttpKernel.php index dd2d542..82f5668 100644 --- a/Bridges/HttpKernel.php +++ b/Bridges/HttpKernel.php @@ -150,6 +150,20 @@ protected function mapRequest(ReactRequest $reactRequest) session_id(Utils::generateSessionId()); } + if (isset($headers['Authorization'])) { + $authorizationHeader = $headers['Authorization']; + $authorizationHeaderParts = explode(' ', $authorizationHeader); + $type = $authorizationHeaderParts[0]; + if (($type === 'Basic' || $type === 'Digest') && isset($authorizationHeaderParts[1])) { + $credentials = base64_decode($authorizationHeaderParts[1]); + $credentialsParts = explode(':', $credentials); + $nativeAuthorizationHeaders['PHP_AUTH_USER'] = isset($credentialsParts[0]) ? $credentialsParts[0] : ''; + $nativeAuthorizationHeaders['PHP_AUTH_PW'] = isset($credentialsParts[1]) ? $credentialsParts[1] : ''; + $nativeAuthorizationHeaders['AUTH_TYPE'] = $type; + $headers = array_merge($headers, $nativeAuthorizationHeaders); + } + } + $files = $reactRequest->getFiles(); $post = $reactRequest->getPost(); From 713a8a98cf1e6ce283f6ffda1d1089f9907113e2 Mon Sep 17 00:00:00 2001 From: Dmytro Dzubenko Date: Thu, 10 Nov 2016 19:34:06 +0200 Subject: [PATCH 2/3] Move data to appropriate superglobal --- Bridges/HttpKernel.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Bridges/HttpKernel.php b/Bridges/HttpKernel.php index 82f5668..25cb1d0 100644 --- a/Bridges/HttpKernel.php +++ b/Bridges/HttpKernel.php @@ -10,6 +10,7 @@ use React\Http\Request as ReactRequest; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpFoundation\StreamedResponse as SymfonyStreamedResponse; use Symfony\Component\HttpKernel\TerminableInterface; @@ -150,6 +151,10 @@ protected function mapRequest(ReactRequest $reactRequest) session_id(Utils::generateSessionId()); } + $_SERVER['PHP_AUTH_USER'] = ''; + $_SERVER['PHP_AUTH_PW'] = ''; + $_SERVER['AUTH_TYPE'] = ''; + if (isset($headers['Authorization'])) { $authorizationHeader = $headers['Authorization']; $authorizationHeaderParts = explode(' ', $authorizationHeader); @@ -157,10 +162,9 @@ protected function mapRequest(ReactRequest $reactRequest) if (($type === 'Basic' || $type === 'Digest') && isset($authorizationHeaderParts[1])) { $credentials = base64_decode($authorizationHeaderParts[1]); $credentialsParts = explode(':', $credentials); - $nativeAuthorizationHeaders['PHP_AUTH_USER'] = isset($credentialsParts[0]) ? $credentialsParts[0] : ''; - $nativeAuthorizationHeaders['PHP_AUTH_PW'] = isset($credentialsParts[1]) ? $credentialsParts[1] : ''; - $nativeAuthorizationHeaders['AUTH_TYPE'] = $type; - $headers = array_merge($headers, $nativeAuthorizationHeaders); + $_SERVER['PHP_AUTH_USER'] = isset($credentialsParts[0]) ? $credentialsParts[0] : ''; + $_SERVER['PHP_AUTH_PW'] = isset($credentialsParts[1]) ? $credentialsParts[1] : ''; + $_SERVER['AUTH_TYPE'] = $type; } } @@ -177,7 +181,7 @@ protected function mapRequest(ReactRequest $reactRequest) $syRequest = new $class($query, $post, $attributes = [], $cookies, $files, $_SERVER, $reactRequest->getBody()); $syRequest->setMethod($method); - $syRequest->headers->replace($headers); + $syRequest->headers->add($headers); return $syRequest; } From 745f721bc5ae13727ead76acb9cd1c33d5692b11 Mon Sep 17 00:00:00 2001 From: Dmytro Dzubenko Date: Thu, 10 Nov 2016 19:35:51 +0200 Subject: [PATCH 3/3] Remove unused import --- Bridges/HttpKernel.php | 1 - 1 file changed, 1 deletion(-) diff --git a/Bridges/HttpKernel.php b/Bridges/HttpKernel.php index 25cb1d0..91a1ac8 100644 --- a/Bridges/HttpKernel.php +++ b/Bridges/HttpKernel.php @@ -10,7 +10,6 @@ use React\Http\Request as ReactRequest; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpFoundation\StreamedResponse as SymfonyStreamedResponse; use Symfony\Component\HttpKernel\TerminableInterface;