/** * Add correct credentials to the token request if grant_type is authorization_code * * @param RequestEvent $event */ public function onTokenRequest(RequestEvent $event) { if ($event->getRequest() !== null) { return; } $credentialsProvider = $this->credentialsProvider; $server = $credentialsProvider->getServerCredentials(); if ($server->supports("authorization_code") === false) { return; } $authCode = $this->tokenManager->findToken("authorization_code"); if ($authCode === null) { return; } if ($authCode->isExpired()) { return; } $client = $credentialsProvider->getClientCredentials(); $code = $authCode->getToken(); $queryData = ["grant_type" => "authorization_code", "code" => $code, "client_id" => $client->getClientId(), "client_secret" => $client->getClientSecret(), "redirect_uri" => $client->getRedirectUri()]; $queryString = http_build_query($queryData); $uri = $server->getTokenUrl() . "?" . $queryString; $request = new Request("GET", $uri); $event->setRequest($request); }
/** * @param RequestEvent $event */ public function onTokenRequest(RequestEvent $event) { if ($event->getRequest() !== null) { return; } $server = $this->credentialsProvider->getServerCredentials(); if (!$server->supports("refresh_token")) { return; } $refreshToken = $this->tokenManager->findToken("refresh_token"); if ($refreshToken === null) { return; } if ($refreshToken->isExpired()) { return; } $client = $this->credentialsProvider->getClientCredentials(); $token = $refreshToken->getToken(); $requestArgs = ["grant_type" => "refresh_token", "refresh_token" => $token, "client_id" => $client->getClientId(), "client_secret" => $client->getClientSecret()]; $tokenUrl = $server->getTokenUrl(); $queryString = http_build_query($requestArgs); $uri = $tokenUrl . "?" . $queryString; $request = new Request("GET", $uri); $event->setRequest($request); }
/** * Adds base url to the request uri * * @param RequestEvent $event */ public function onResourceRequest(RequestEvent $event) { $resourceUrl = $this->credentialsProvider->getServerCredentials()->getResourceUrl(); $request = $event->getRequest(); $uri = (string) $request->getUri(); if (strpos($uri, $resourceUrl) !== false) { return; } $uri = $resourceUrl . $uri; $request = $request->withUri(new Uri($uri)); $event->setRequest($request); }
/** * @param RequestInterface|null $resourceRequest * * @return RequestInterface|null * * @throws AuthenticationException */ public function requestAccessToken(RequestInterface $resourceRequest = null) { /** @var RequestEvent $event */ $request = new Request("GET", "placeholder"); $event = new RequestEvent($request); // TODO: Fix this $event->setRequest(null); $event = $this->eventDispatcher->dispatch(OAuthClientEvents::TOKEN_REQUEST, $event); $request = $event->getRequest(); if ($request === null) { throw new AuthenticationException("No grant type matched"); } $response = $this->httpClient->send($request); /** @var ResponseEvent $event */ $event = $this->eventDispatcher->dispatch(OAuthClientEvents::TOKEN_RESPONSE, new ResponseEvent($response)); if ($resourceRequest !== null) { /** @var RequestEvent $event */ $event = new RequestEvent($resourceRequest); $event = $this->eventDispatcher->dispatch(OAuthClientEvents::RESOURCE_REQUEST, $event); return $event->getRequest(); } return null; }
/** * @param RequestEvent $event */ public function onTokenRequest(RequestEvent $event) { if ($event->getRequest() !== null) { return; } $server = $this->credentialsProvider->getServerCredentials(); if (!$server->supports("password")) { return; } $credentials = $this->credentialsProvider->getCredentials("password"); if ($credentials === null) { return; } if ($credentials->areExpired()) { return; } $client = $this->credentialsProvider->getClientCredentials(); $requestArgs = ["grant_type" => "password", "username" => $credentials->getUsername(), "password" => $credentials->getPassword(), "client_id" => $client->getClientId(), "client_secret" => $client->getClientSecret()]; $tokenUrl = $server->getTokenUrl(); $queryString = http_build_query($requestArgs); $uri = $tokenUrl . "?" . $queryString; $request = new Request("GET", $uri); $event->setRequest($request); }