/**
  * 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);
 }
Esempio n. 4
0
 /**
  * @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);
 }