[HttpFoundation] Support user and password in url
This commit is contained in:
parent
b99bb1e31b
commit
aecfd0a891
@ -213,6 +213,14 @@ class Request
|
||||
$defaults['HTTP_HOST'] = $defaults['HTTP_HOST'].':'.$components['port'];
|
||||
}
|
||||
|
||||
if (isset($components['user'])) {
|
||||
$defaults['PHP_AUTH_USER'] = $components['user'];
|
||||
}
|
||||
|
||||
if (isset($components['pass'])) {
|
||||
$defaults['PHP_AUTH_PW'] = $components['pass'];
|
||||
}
|
||||
|
||||
if (!isset($components['path'])) {
|
||||
$components['path'] = '';
|
||||
}
|
||||
@ -571,6 +579,26 @@ class Request
|
||||
return $this->headers->get('X-Forwarded-Port') ?: $this->server->get('SERVER_PORT');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the user.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->server->get('PHP_AUTH_USER');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the password.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getPassword()
|
||||
{
|
||||
return $this->server->get('PHP_AUTH_PW');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the HTTP host being requested.
|
||||
*
|
||||
@ -624,7 +652,20 @@ class Request
|
||||
$qs = '?'.$qs;
|
||||
}
|
||||
|
||||
return $this->getScheme().'://'.$this->getHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs;
|
||||
$auth = '';
|
||||
if ($user = $this->getUser()) {
|
||||
$auth = $user;
|
||||
}
|
||||
|
||||
if ($pass = $this->getPassword()) {
|
||||
$auth .= ":$pass";
|
||||
}
|
||||
|
||||
if ('' !== $auth) {
|
||||
$auth .= '@';
|
||||
}
|
||||
|
||||
return $this->getScheme().'://'.$auth.$this->getHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -128,6 +128,25 @@ class RequestTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('test.com:90', $request->getHttpHost());
|
||||
$this->assertFalse($request->isSecure());
|
||||
|
||||
$request = Request::create('http://test:test@test.com');
|
||||
$this->assertEquals('http://test:test@test.com/', $request->getUri());
|
||||
$this->assertEquals('/', $request->getPathInfo());
|
||||
$this->assertEquals('', $request->getQueryString());
|
||||
$this->assertEquals(80, $request->getPort());
|
||||
$this->assertEquals('test.com', $request->getHttpHost());
|
||||
$this->assertEquals('test', $request->getUser());
|
||||
$this->assertEquals('test', $request->getPassword());
|
||||
$this->assertFalse($request->isSecure());
|
||||
|
||||
$request = Request::create('http://testnopass@test.com');
|
||||
$this->assertEquals('http://testnopass@test.com/', $request->getUri());
|
||||
$this->assertEquals('/', $request->getPathInfo());
|
||||
$this->assertEquals('', $request->getQueryString());
|
||||
$this->assertEquals(80, $request->getPort());
|
||||
$this->assertEquals('test.com', $request->getHttpHost());
|
||||
$this->assertEquals('testnopass', $request->getUser());
|
||||
$this->assertNull($request->getPassword());
|
||||
$this->assertFalse($request->isSecure());
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user