You are here

class RouteSubscriber in Block permissions 8

Listens to the dynamic route events.

Hierarchy

  • class \Drupal\Core\Routing\RouteSubscriberBase implements \Symfony\Component\EventDispatcher\EventSubscriberInterface

Expanded class hierarchy of RouteSubscriber

1 string reference to 'RouteSubscriber'
block_permissions.services.yml in ./block_permissions.services.yml
block_permissions.services.yml
1 service uses RouteSubscriber
block_permissions.route_subscriber in ./block_permissions.services.yml
Drupal\block_permissions\Routing\RouteSubscriber

File

src/Routing/RouteSubscriber.php, line 11

Namespace

Drupal\block_permissions\Routing
View source
class RouteSubscriber extends RouteSubscriberBase {

  /**
   * {@inheritdoc}
   */
  public function alterRoutes(RouteCollection $collection) {

    // Change access callback for the blocks list per theme to our
    // permission-per-theme based version.
    if ($route = $collection
      ->get('block.admin_display_theme')) {
      $route
        ->addRequirements([
        '_custom_access' => "\\Drupal\\block_permissions\\BlockPermissionsAccessControlHandler::blockThemeListAccess",
      ]);
    }

    // Change access callback for the default block management page.
    if ($route = $collection
      ->get('block.admin_display')) {
      $route
        ->addRequirements([
        '_custom_access' => "\\Drupal\\block_permissions\\BlockPermissionsAccessControlHandler::blockListAccess",
      ]);
    }

    // Change the access callback for the add form of a block.
    if ($route = $collection
      ->get('block.admin_add')) {
      $route
        ->addRequirements([
        '_custom_access' => "\\Drupal\\block_permissions\\BlockPermissionsAccessControlHandler::blockAddFormAccess",
      ]);
    }

    // Change the access callback for the edit form of a block.
    if ($route = $collection
      ->get('entity.block.edit_form')) {
      $route
        ->addRequirements([
        '_custom_access' => "\\Drupal\\block_permissions\\BlockPermissionsAccessControlHandler::blockFormAccess",
      ]);
    }

    // Change the access callback for the delete form of a block.
    if ($route = $collection
      ->get('entity.block.delete_form')) {
      $route
        ->addRequirements([
        '_custom_access' => "\\Drupal\\block_permissions\\BlockPermissionsAccessControlHandler::blockFormAccess",
      ]);
    }

    // Change the controller for the block admin_library.
    if ($route = $collection
      ->get('block.admin_library')) {
      $route
        ->setDefault('_controller', '\\Drupal\\block_permissions\\Controller\\BlockPermissionsBlockLibraryController::listBlocks');
      $route
        ->addRequirements([
        '_custom_access' => "\\Drupal\\block_permissions\\BlockPermissionsAccessControlHandler::blockThemeListAccess",
      ]);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RouteSubscriber::alterRoutes public function Alters existing routes for a specific collection. Overrides RouteSubscriberBase::alterRoutes
RouteSubscriberBase::getSubscribedEvents public static function Returns an array of event names this subscriber wants to listen to. 5
RouteSubscriberBase::onAlterRoutes public function Delegates the route altering to self::alterRoutes(). 1