You are here

public function RouteSubscriber::alterRoutes in Block permissions 8

Alters existing routes for a specific collection.

Parameters

\Symfony\Component\Routing\RouteCollection $collection: The route collection for adding routes.

Overrides RouteSubscriberBase::alterRoutes

File

src/Routing/RouteSubscriber.php, line 16

Class

RouteSubscriber
Listens to the dynamic route events.

Namespace

Drupal\block_permissions\Routing

Code

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",
    ]);
  }
}