mirror of
				https://github.com/elyby/oauth2-server.git
				synced 2025-05-31 14:12:07 +05:30 
			
		
		
		
	Updated @ziege's patch to overcome awkward access token definition requirement (i.e. access token can have a space in it) and also optimised code. Fixes #52
This commit is contained in:
		| @@ -250,15 +250,12 @@ class Resource | ||||
|             // 1st request: Authorization: Bearer XXX | ||||
|             // 2nd request: Authorization: Bearer XXX, Bearer XXX | ||||
|             if (strpos($header, ',') !== false) { | ||||
|                 $accessTokens = array(); | ||||
|                 foreach (explode(',', $header) as $header_part) { | ||||
|                     $accessTokens[] = trim(preg_replace('/^(?:\s+)?Bearer\s+/', '', $header_part)); | ||||
|                 } | ||||
|                 // take always the first one | ||||
|                 $accessToken = $accessTokens[0]; | ||||
|                 $headerPart = explode(',', $header); | ||||
|                 $accessToken = preg_replace('/^(?:\s+)?Bearer(\s{1})/', '', $headerPart[0]); | ||||
|             } else { | ||||
|                 $accessToken = trim(preg_replace('/^(?:\s+)?Bearer\s+/', '', $header)); | ||||
|                 $accessToken = preg_replace('/^(?:\s+)?Bearer(\s{1})/', '', $header); | ||||
|             } | ||||
|             $accessToken = ($accessToken === 'Bearer') ? '' : $accessToken; | ||||
|         } else { | ||||
|             $method = $this->getRequest()->server('REQUEST_METHOD'); | ||||
|             $accessToken = $this->getRequest()->{$method}($this->tokenKey); | ||||
|   | ||||
| @@ -83,6 +83,24 @@ class Resource_Server_test extends PHPUnit_Framework_TestCase | ||||
| 	    $method->invoke($s); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @expectedException League\OAuth2\Server\Exception\InvalidAccessTokenException | ||||
|      */ | ||||
|     public function test_determineAccessToken_brokenCurlRequest() | ||||
|     { | ||||
|         $_SERVER['HTTP_AUTHORIZATION'] = 'Bearer, Bearer abcdef'; | ||||
|         $request = new League\OAuth2\Server\Util\Request(array(), array(), array(), array(), $_SERVER); | ||||
|  | ||||
|         $s = $this->returnDefault(); | ||||
|         $s->setRequest($request); | ||||
|  | ||||
|         $reflector = new ReflectionClass($s); | ||||
|         $method = $reflector->getMethod('determineAccessToken'); | ||||
|         $method->setAccessible(true); | ||||
|  | ||||
|         $method->invoke($s); | ||||
|     } | ||||
|  | ||||
|     public function test_determineAccessToken_fromHeader() | ||||
|     { | ||||
|         $request = new League\OAuth2\Server\Util\Request(); | ||||
| @@ -106,6 +124,29 @@ class Resource_Server_test extends PHPUnit_Framework_TestCase | ||||
| 	    $this->assertEquals('abcdef', $result); | ||||
|     } | ||||
|  | ||||
|     public function test_determineAccessToken_fromBrokenCurlHeader() | ||||
|     { | ||||
|         $request = new League\OAuth2\Server\Util\Request(); | ||||
|  | ||||
|         $requestReflector = new ReflectionClass($request); | ||||
|         $param = $requestReflector->getProperty('headers'); | ||||
|         $param->setAccessible(true); | ||||
|         $param->setValue($request, array( | ||||
|             'Authorization' =>  'Bearer abcdef, Bearer abcdef' | ||||
|         )); | ||||
|         $s = $this->returnDefault(); | ||||
|         $s->setRequest($request); | ||||
|  | ||||
|         $reflector = new ReflectionClass($s); | ||||
|  | ||||
|         $method = $reflector->getMethod('determineAccessToken'); | ||||
|         $method->setAccessible(true); | ||||
|  | ||||
|         $result = $method->invoke($s); | ||||
|  | ||||
|         $this->assertEquals('abcdef', $result); | ||||
|     } | ||||
|  | ||||
|     public function test_determineAccessToken_fromMethod() | ||||
|     { | ||||
|     	$s = $this->returnDefault(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user