class ReportUri in Content-Security-Policy 8
Same name in this branch
- 8 src/Controller/ReportUri.php \Drupal\csp\Controller\ReportUri
- 8 src/Plugin/CspReportingHandler/ReportUri.php \Drupal\csp\Plugin\CspReportingHandler\ReportUri
Report URI Controller.
@package Drupal\csp\Controller
Hierarchy
- class \Drupal\csp\Controller\ReportUri implements ContainerInjectionInterface
Expanded class hierarchy of ReportUri
File
- src/Controller/ ReportUri.php, line 16 
Namespace
Drupal\csp\ControllerView source
class ReportUri implements ContainerInjectionInterface {
  /**
   * The Request Stack service.
   *
   * @var \Symfony\Component\HttpFoundation\RequestStack
   */
  private $requestStack;
  /**
   * The Logger channel.
   *
   * @var \Psr\Log\LoggerInterface
   */
  private $logger;
  /**
   * Create a new Report URI Controller.
   *
   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
   *   The Request Stack service.
   * @param \Psr\Log\LoggerInterface $logger
   *   The Logger channel.
   */
  public function __construct(RequestStack $requestStack, LoggerInterface $logger) {
    $this->requestStack = $requestStack;
    $this->logger = $logger;
  }
  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('request_stack'), $container
      ->get('logger.channel.csp'));
  }
  /**
   * Handle a report submission.
   *
   * @param string $type
   *   The report type.
   *
   * @return \Symfony\Component\HttpFoundation\Response
   *   An empty response.
   */
  public function log($type) {
    $validTypes = [
      'enforce',
      'reportOnly',
    ];
    if (!in_array($type, $validTypes)) {
      return new Response('', 404);
    }
    $reportJson = $this->requestStack
      ->getCurrentRequest()
      ->getContent();
    $report = json_decode($reportJson);
    // Return 400: Bad Request if content cannot be parsed.
    if (empty($report) || json_last_error() != JSON_ERROR_NONE) {
      return new Response('', 400);
    }
    $this->logger
      ->info("@type <br/>\n<pre>@data</pre>", [
      '@type' => $type,
      '@data' => json_encode($report, JSON_PRETTY_PRINT),
    ]);
    // 202: Accepted.
    return new Response('', 202);
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| ReportUri:: | private | property | The Logger channel. | |
| ReportUri:: | private | property | The Request Stack service. | |
| ReportUri:: | public static | function | Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: | |
| ReportUri:: | public | function | Handle a report submission. | |
| ReportUri:: | public | function | Create a new Report URI Controller. | 
