lightning_api-8.x-4.x-dev/src/RequestSubscriber.php

src/RequestSubscriber.php
<?php

namespace Drupal\lightning_api;

use Drupal\Core\DependencyInjection\ClassResolverInterface;
use Drupal\Core\Messenger\MessengerTrait;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\Url;
use Drupal\lightning_api\Form\OAuthKeyForm;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;

/**
 * Subscribes to request-related events.
 *
 * @internal
 *   This is an internal part of Lightning API and may be changed or removed at
 *   any time without warning. External code should not use this class.
 */
final class RequestSubscriber implements EventSubscriberInterface {

  use MessengerTrait;
  use StringTranslationTrait;

  /**
   * The current route match service.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  private $routeMatch;

  /**
   * The class resolver service.
   *
   * @var \Drupal\Core\DependencyInjection\ClassResolverInterface
   */
  private $classResolver;

  /**
   * RequestSubscriber constructor.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
   *   The current route match service.
   * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver
   *   The class resolver service.
   */
  public function __construct(RouteMatchInterface $route_match, ClassResolverInterface $class_resolver) {
    $this->routeMatch = $route_match;
    $this->classResolver = $class_resolver;
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      KernelEvents::REQUEST => 'onRequest',
    ];
  }

  /**
   * Reacts when a request begins.
   */
  public function onRequest(): void {
    if ($this->routeMatch->getRouteName() !== 'oauth2_token.settings') {
      return;
    }

    /** @var \Drupal\lightning_api\Form\OAuthKeyForm $form */
    $form = $this->classResolver->getInstanceFromDefinition(OAuthKeyForm::class);
    if ($form->keyExists() === FALSE) {
      $warning = $this->t('You may wish to <a href=":generate_keys">generate a key pair</a> for OAuth authentication.', [
        ':generate_keys' => Url::fromRoute('lightning_api.generate_keys')->toString(),
      ]);
      $this->messenger()->addWarning($warning);
    }
  }

}

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

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