OauthInteractions.php in FormAssembly 8
File
src/Controller/OauthInteractions.php
View source
<?php
namespace Drupal\formassembly\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Url;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Drupal\Core\Routing\TrustedRedirectResponse;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Fathershawn\OAuth2\Client\Provider\FormAssembly as OauthProvider;
class OauthInteractions extends ControllerBase {
protected $currentRequest;
protected $apiAuthorize;
protected $messenger;
protected $keyService;
public static function create(ContainerInterface $container) {
$instance = parent::create($container);
$requestStack = $container
->get('request_stack');
$instance->currentRequest = $requestStack
->getCurrentRequest();
$instance->apiAuthorize = $container
->get('formassembly.authorize');
$instance->messenger = $container
->get('messenger');
$instance->keyService = $container
->get('formassembly.key');
return $instance;
}
public function authorize() {
$credentials = $this->keyService
->getOauthKeys();
$provider = new OauthProvider([
'clientId' => $credentials['cid'],
'clientSecret' => $credentials['secret'],
'redirectUri' => Url::fromRoute('fa_form.authorize.store', [], [
'absolute' => TRUE,
])
->toString(TRUE)
->getGeneratedUrl(),
'baseUrl' => $this->apiAuthorize
->getUrl('base')
->toString(TRUE)
->getGeneratedUrl(),
]);
$url = $provider
->getAuthorizationUrl();
$response = new TrustedRedirectResponse($url);
$response
->addCacheableDependency($url);
return $response;
}
public function code() {
try {
$code = $this->currentRequest->query
->get('code');
if (empty($code)) {
throw new \UnexpectedValueException("The authorization_code query parameter is missing.");
}
$this->apiAuthorize
->authorize($code);
$this->messenger
->addMessage($this
->t('FormAssembly successfully authorized.'));
$url = Url::fromRoute('fa_form.settings');
return new RedirectResponse($url
->toString());
} catch (\Exception $exception) {
$this->messenger
->addMessage($this
->t('FormAssembly module failed to authorize. Reason: @message', [
'@message' => $exception
->getMessage(),
]), 'error');
throw $exception;
}
}
}