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);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc