3 namespace Drupal\settings_tray\Access;
5 use Drupal\block\BlockInterface;
6 use Drupal\Core\Access\AccessResult;
7 use Drupal\Core\Block\BlockPluginInterface;
8 use Drupal\Core\Plugin\PluginWithFormsInterface;
9 use Drupal\Core\Routing\Access\AccessInterface;
12 * Determines whether the requested block has a 'settings_tray' form.
16 class BlockPluginHasSettingsTrayFormAccessCheck implements AccessInterface {
19 * Checks access for accessing a block's 'settings_tray' form.
21 * @param \Drupal\block\BlockInterface $block
22 * The block whose 'settings_tray' form is being accessed.
24 * @return \Drupal\Core\Access\AccessResultInterface
27 public function access(BlockInterface $block) {
28 /** @var \Drupal\Core\Block\BlockPluginInterface $block_plugin */
29 $block_plugin = $block->getPlugin();
30 return $this->accessBlockPlugin($block_plugin);
34 * Checks access for accessing a block plugin's 'settings_tray' form.
36 * @param \Drupal\Core\Block\BlockPluginInterface $block_plugin
37 * The block plugin whose 'settings_tray' form is being accessed.
39 * @return \Drupal\Core\Access\AccessResultInterface
42 * @see settings_tray_preprocess_block()
44 public function accessBlockPlugin(BlockPluginInterface $block_plugin) {
45 return AccessResult::allowedIf($block_plugin instanceof PluginWithFormsInterface && $block_plugin->hasFormClass('settings_tray'));