canto-1.0.x-dev/src/Controller/CantoOAuthController.php
src/Controller/CantoOAuthController.php
<?php
namespace Drupal\canto\Controller;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\Core\Session\AccountProxy;
use Drupal\Core\Controller\ControllerBase;
use Drupal\canto\CantoRepository;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
/**
* Controller class.
*/
class CantoOAuthController extends ControllerBase {
/**
* The user data service.
*
* @var \Drupal\canto\CantoRepository
*/
protected $repository;
/**
* The user data service.
*
* @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
*/
protected $loggerFactory;
/**
* Account proxy.
*
* @var \Drupal\Core\Session\AccountProxy
*/
protected $accountProxy;
/**
* {@inheritdoc}
*/
public function __construct(CantoRepository $repository, LoggerChannelFactoryInterface $loggerFactory, AccountProxy $accountProxy) {
$this->repository = $repository;
$this->loggerFactory = $loggerFactory;
$this->accountProxy = $accountProxy;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('canto.repository'),
$container->get('logger.factory'),
$container->get('current_user'),
);
}
/**
* Save access token to databse.
*
* @todo use route parameters for user
*/
public function saveAccessToken(Request $request) {
$logger = $this->loggerFactory->get('canto');
$logger->notice('saveAccessToken');
$userId = $this->accountProxy->id();
$env = $this->config('canto.settings')->get('env');
$entry = [
'accessToken' => $request->request->get('accessToken'),
'tokenType' => $request->request->get('tokenType'),
'subdomain' => $request->request->get('subdomain'),
'uid' => $userId,
'env' => is_null($env) ? "canto.com" : $env,
];
$return_value = $this->repository->insert($entry);
return new JsonResponse($return_value);
}
/**
* Delete access token.
*
* @todo use route parameters for user
*/
public function deleteAccessToken(Request $request) {
$logger = $this->loggerFactory->get('canto');
$logger->notice('deleteAccessToken');
$userId = $this->accountProxy->id();
$entry = [
'accessToken' => $request->request->get('accessToken'),
'uid' => $userId,
'env' => $request->request->get('env'),
];
$logger->notice('delete AccessToken' . $request->request->get('accessToken'));
$logger->notice('env' . $request->request->get('env'));
$return_value = $this->repository->delete($entry);
return new JsonResponse($return_value);
}
}
