/** * Matches token type against request and returns if it matches * * @param IRequest $request * * @throws \OAuth2\Exception\InvalidContentTypeException * @throws \OAuth2\Exception\InvalidHttpMethodException * @throws \OAuth2\Exception\MalformedTokenException * @return boolean */ public function match(IRequest $request) { // first check request for authorization header $header = $request->headers('authorization'); if ($header) { if (!preg_match('~Bearer\\s(\\S+)~', $header, $matches)) { throw new MalformedTokenException(); } $this->identifier = $matches[1]; return true; } // if is POST check for request (POST BODY) parameters if ($accessToken = $request->request('access_token')) { if (!($request->isMethod('post') || $request->isMethod('put'))) { throw new InvalidHttpMethodException(); } $contentType = $request->headers('content_type'); if (!$contentType || strpos($contentType, 'application/x-www-form-urlencoded') !== 0) { throw new InvalidContentTypeException(); } $this->identifier = $accessToken; return true; } // check query for access token if ($accessToken = $request->query('access_token')) { $this->identifier = $accessToken; return true; } return false; }
/** * Does grant type match given request? * * @param IRequest $request * * @return bool */ public function match(IRequest $request) { if ($request->isMethod('GET')) { return $request->query('response_type') === 'token'; } return false; }
function it_issues_access_token_using_grant_type_of_given_request(IRequest $request, IGrantTypeResolver $grantTypeResolver, IGrantType $grantType, IAccessToken $accessToken) { $request->isMethod('post')->willReturn(true)->shouldBeCalled(); $grantTypeResolver->resolve($request)->willReturn($grantType)->shouldBeCalled(); $grantType->grant($request)->willReturn($accessToken)->shouldBeCalled(); $this->issueToken($request)->shouldReturnAnInstanceOf('OAuth2\\Storage\\IAccessToken'); }
/** * Issues access token using grant type from current request * * @param IRequest $request * * @return \OAuth2\Storage\IAccessToken * @throws \OAuth2\Exception\InvalidHttpMethodException */ public function issueToken(IRequest $request) { if (!$request->isMethod('post')) { throw new InvalidHttpMethodException(); } $grantType = $this->grantTypeResolver->resolve($request); return $grantType->grant($request); }
/** * Does grant type match given request? * * @param IRequest $request * * @return bool */ public function match(IRequest $request) { if ($request->isMethod('GET')) { return $request->query('response_type') === 'code'; } else { return $request->request('grant_type') === 'authorization_code'; } }
function it_should_return_access_token_identifier_from_token_in_request_body(IRequest $request) { $request->headers('authorization')->willReturn(null); $request->request('access_token')->willReturn('pom'); $request->isMethod('post')->willReturn(true); $request->headers('content_type')->willReturn('application/x-www-form-urlencoded'); $this->match($request)->shouldReturn(true); $this->getAccessToken()->shouldReturn('pom'); }
function it_matches_against_request(IRequest $request1, IRequest $request2, IRequest $request3) { $request1->isMethod('GET')->willReturn(true)->shouldBeCalled(); $request1->query('response_type')->willReturn('token')->shouldBeCalled(); $this->match($request1)->shouldReturn(true); $request2->isMethod('GET')->willReturn(false)->shouldBeCalled(); $this->match($request2)->shouldReturn(false); $request3->isMethod('GET')->willReturn(true)->shouldBeCalled(); $request3->query('response_type')->willReturn(null)->shouldBeCalled(); $this->match($request3)->shouldReturn(false); }
function it_matches_against_request(IRequest $request1, IRequest $request2, IRequest $request3, IRequest $request4) { $request1->isMethod('GET')->willReturn(true)->shouldBeCalled(); $request1->query('response_type')->willReturn('code')->shouldBeCalled(); $this->match($request1)->shouldReturn(true); $request2->isMethod('GET')->willReturn(false)->shouldBeCalled(); $request2->request('grant_type')->willReturn('authorization_code')->shouldBeCalled(); $this->match($request2)->shouldReturn(true); $request3->isMethod('GET')->willReturn(true)->shouldBeCalled(); $request3->query('response_type')->willReturn('pom')->shouldBeCalled(); $this->match($request3)->shouldReturn(false); $request4->isMethod('GET')->willReturn(false)->shouldBeCalled(); $request4->request('grant_type')->willReturn('pom')->shouldBeCalled(); $this->match($request4)->shouldReturn(false); }