getRequirement('_layout_builder_access'); $access = $section_storage->access($operation, $account, TRUE); // Check for the global permission unless the section storage checks // permissions itself. if (!$section_storage->getPluginDefinition()->get('handles_permission_check')) { $access = $access->andIf(AccessResult::allowedIfHasPermission($account, 'configure any layout')); } // Disables access to inline blocks add_block routes if the section storage // opts out. // Check if inline block access should be disabled. if ($operation === 'add_block' && !($section_storage->getPluginDefinition()->get('allow_inline_blocks') ?? TRUE)) { $route_name = $this->route_match->getRouteName(); $is_inline_block = str_starts_with((string) $this->route_match->getParameter('plugin_id'), 'inline_block:'); if ($route_name === 'layout_builder.choose_inline_block' || ($route_name === 'layout_builder.add_block' && $is_inline_block)) { $access = $access->andIf(AccessResult::forbidden()); } } if ($access instanceof RefinableCacheableDependencyInterface) { // @todo https://www.drupal.org/project/drupal/issues/3446509 Decide if // this logic needs to be changed. if ($section_storage instanceof CacheableDependencyInterface) { $access->addCacheableDependency($section_storage); } else { $access->setCacheMaxAge(0); } } return $access; } }