You are here

ReviewsAccessCheck.php in Reviews 1.0.x

File

src/Access/ReviewsAccessCheck.php
View source
<?php

namespace Drupal\reviews\Access;

use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\node\NodeInterface;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Entity\EntityTypeManager;

/**
 * Checks access for displaying reviews pages.
 */
class ReviewsAccessCheck implements AccessInterface {

  /**
   * Drupal EntityTypeManager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManager
   */
  protected $entityTypeManager;

  /**
   * ReviewsAccessCheck constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManager
   *   Entity Type Manager.
   */
  public function __construct(EntityTypeManager $entity_type_manager) {
    $this->entityTypeManager = $entity_type_manager;
  }

  /**
   * Access check to determine if reviews are enabled and accessible.
   *
   * @param \Drupal\node\Interface $account
   *   Run access checks for this node.
   *
   * @return \Drupal\Core\Access\AccessResultInterface
   *   The access result.
   */
  public function access(NodeInterface $node) {
    $config = \Drupal::config('reviews.settings');
    $reviews_enabled = $config
      ->get('reviews.enabled');
    $reviewable_types = $config
      ->get('reviews.review_types');

    // Return access alowed only if reviews are enabled and
    // the type (bundle) of the node being viewed is included
    // in the reviewable node types.
    return AccessResult::allowedif($reviews_enabled && $reviewable_types[$node
      ->bundle()] === $node
      ->bundle());
  }

}

Classes

Namesort descending Description
ReviewsAccessCheck Checks access for displaying reviews pages.