فهرست منبع

[HttpFoundation] made PHP_AUTH_PW optional

Fabien Potencier 14 سال پیش
والد
کامیت
853935fbab

+ 2 - 1
src/Symfony/Component/HttpFoundation/ServerBag.php

@@ -37,7 +37,8 @@ class ServerBag extends ParameterBag
 
         // PHP_AUTH_USER/PHP_AUTH_PW
         if (isset($this->parameters['PHP_AUTH_USER'])) {
-            $headers['Authorization'] = 'Basic '.base64_encode($this->parameters['PHP_AUTH_USER'].':'.$this->parameters['PHP_AUTH_PW']);
+            $pass = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
+            $headers['AUTHORIZATION'] = 'Basic '.base64_encode($this->parameters['PHP_AUTH_USER'].':'.$pass);
         }
 
         return $headers;

+ 11 - 1
tests/Symfony/Tests/Component/HttpFoundation/ServerBagTest.php

@@ -29,6 +29,8 @@ class ServerBagTest extends \PHPUnit_Framework_TestCase
             'HTTP_CONTENT_TYPE' => 'text/html',
             'HTTP_CONTENT_LENGTH' => '0',
             'HTTP_ETAG' => 'asdf',
+            'PHP_AUTH_USER' => 'foo',
+            'PHP_AUTH_PW' => 'bar',
         );
 
         $bag = new ServerBag($server);
@@ -36,7 +38,15 @@ class ServerBagTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(array(
             'CONTENT_TYPE' => 'text/html',
             'CONTENT_LENGTH' => '0',
-            'ETAG' => 'asdf'
+            'ETAG' => 'asdf',
+            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
         ), $bag->getHeaders());
     }
+
+    public function testHttpPasswordIsOptional()
+    {
+        $bag = new ServerBag(array('PHP_AUTH_USER' => 'foo'));
+
+        $this->assertEquals(array('AUTHORIZATION' => 'Basic '.base64_encode('foo:')), $bag->getHeaders());
+    }
 }