OAuth2.php in Migrate Plus 8.4
File
src/Plugin/migrate_plus/authentication/OAuth2.php
View source
<?php
namespace Drupal\migrate_plus\Plugin\migrate_plus\authentication;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\migrate\MigrateException;
use Drupal\migrate_plus\AuthenticationPluginBase;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use Sainsburys\Guzzle\Oauth2\GrantType\AuthorizationCode;
use Sainsburys\Guzzle\Oauth2\GrantType\ClientCredentials;
use Sainsburys\Guzzle\Oauth2\GrantType\JwtBearer;
use Sainsburys\Guzzle\Oauth2\GrantType\PasswordCredentials;
use Sainsburys\Guzzle\Oauth2\GrantType\RefreshToken;
use Sainsburys\Guzzle\Oauth2\Middleware\OAuthMiddleware;
class OAuth2 extends AuthenticationPluginBase implements ContainerFactoryPluginInterface {
public function getAuthenticationOptions() {
$handlerStack = HandlerStack::create();
$client = new Client([
'handler' => $handlerStack,
'base_uri' => $this->configuration['base_uri'],
'auth' => 'oauth2',
]);
switch ($this->configuration['grant_type']) {
case 'authorization_code':
$grant_type = new AuthorizationCode($client, $this->configuration);
break;
case 'client_credentials':
$grant_type = new ClientCredentials($client, $this->configuration);
break;
case 'urn:ietf:params:oauth:grant-type:jwt-bearer':
$grant_type = new JwtBearer($client, $this->configuration);
break;
case 'password':
$grant_type = new PasswordCredentials($client, $this->configuration);
break;
case 'refresh_token':
$grant_type = new RefreshToken($client, $this->configuration);
break;
default:
throw new MigrateException("Unrecognized grant_type {$this->configuration['grant_type']}.");
}
$middleware = new OAuthMiddleware($client, $grant_type);
return [
'headers' => [
'Authorization' => 'Bearer ' . $middleware
->getAccessToken()
->getToken(),
],
];
}
}
Classes
Name |
Description |
OAuth2 |
Provides OAuth2 authentication for the HTTP resource. |