|
@@ -16,6 +16,7 @@ namespace Symfony\Component\HttpFoundation;
|
|
*
|
|
*
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
* @author Bulat Shakirzyanov <mallluhuct@gmail.com>
|
|
* @author Bulat Shakirzyanov <mallluhuct@gmail.com>
|
|
|
|
+ * @author Robert Kiss <kepten@gmail.com>
|
|
*/
|
|
*/
|
|
class ServerBag extends ParameterBag
|
|
class ServerBag extends ParameterBag
|
|
{
|
|
{
|
|
@@ -32,10 +33,41 @@ class ServerBag extends ParameterBag
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- // PHP_AUTH_USER/PHP_AUTH_PW
|
|
|
|
if (isset($this->parameters['PHP_AUTH_USER'])) {
|
|
if (isset($this->parameters['PHP_AUTH_USER'])) {
|
|
- $pass = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
|
|
|
|
- $headers['AUTHORIZATION'] = 'Basic '.base64_encode($this->parameters['PHP_AUTH_USER'].':'.$pass);
|
|
|
|
|
|
+ $headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
|
|
|
|
+ $headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
|
|
|
|
+ } else {
|
|
|
|
+ /*
|
|
|
|
+ * php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
|
|
|
|
+ * For this workaround to work, add this line to your .htaccess file:
|
|
|
|
+ * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
|
|
|
+ *
|
|
|
|
+ * A sample .htaccess file:
|
|
|
|
+ * RewriteEngine On
|
|
|
|
+ * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
|
|
|
+ * RewriteCond %{REQUEST_FILENAME} !-f
|
|
|
|
+ * RewriteRule ^(.*)$ app.php [QSA,L]
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ $authorizationHeader = null;
|
|
|
|
+ if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
|
|
|
|
+ $authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
|
|
|
|
+ } elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
|
|
|
|
+ $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Decode AUTHORIZATION header into PHP_AUTH_USER and PHP_AUTH_PW
|
|
|
|
+ if (null !== $authorizationHeader) {
|
|
|
|
+ $exploded = explode(':', base64_decode(substr($authorizationHeader, 6)));
|
|
|
|
+ if (count($exploded) == 2) {
|
|
|
|
+ list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // PHP_AUTH_USER/PHP_AUTH_PW
|
|
|
|
+ if (isset($headers['PHP_AUTH_USER'])) {
|
|
|
|
+ $headers['AUTHORIZATION'] = 'Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']);
|
|
}
|
|
}
|
|
|
|
|
|
return $headers;
|
|
return $headers;
|