diff --git a/src/Plugin/Block/PublicationAuthorsBlock.php b/src/Plugin/Block/PublicationAuthorsBlock.php index 0db5ca787aab65c1e4378f82f72478b6f51afdbe..ad9f2c9d1f9d7973032bbb30af4b1e6cb059d642 100644 --- a/src/Plugin/Block/PublicationAuthorsBlock.php +++ b/src/Plugin/Block/PublicationAuthorsBlock.php @@ -2,10 +2,13 @@ namespace Drupal\uw_dashboard\Plugin\Block; +use Drupal\Core\Access\AccessResult; use Drupal\Core\Block\BlockBase; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\Core\Session\AccountInterface; +use Drupal\node\Plugin\views\filter\Access; use Symfony\Component\DependencyInjection\ContainerInterface; /** @@ -25,6 +28,13 @@ class PublicationAuthorsBlock extends BlockBase implements ContainerFactoryPlugi */ protected $entityTypeManager; + /** + * The current user. + * + * @var \Drupal\Core\Session\AccountProxyInterface + */ + protected $currentUser; + /** * {@inheritdoc} */ @@ -38,7 +48,8 @@ class PublicationAuthorsBlock extends BlockBase implements ContainerFactoryPlugi $configuration, $plugin_id, $plugin_definition, - $container->get('entity_type.manager') + $container->get('entity_type.manager'), + $container->get('current_user') ); } @@ -53,15 +64,19 @@ class PublicationAuthorsBlock extends BlockBase implements ContainerFactoryPlugi * The plugin implementation definition. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager * Entity type manager. + * @param \Drupal\Core\Session\AccountProxyInterface $currentUser + * The current user. */ public function __construct( array $configuration, $plugin_id, $plugin_definition, - EntityTypeManagerInterface $entityTypeManager + EntityTypeManagerInterface $entityTypeManager, + AccountInterface $currentUser ) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->entityTypeManager = $entityTypeManager; + $this->currentUser = $currentUser; } /** @@ -69,6 +84,13 @@ class PublicationAuthorsBlock extends BlockBase implements ContainerFactoryPlugi */ public function build() { + // Add a message if the user does not have access to the block. + if (!$this->currentUser->hasPermission('edit bibcite_keyword')) { + return [ + '#markup' => 'You do not have permission to view this block.', + ]; + } + // Load the view. /** @var \Drupal\views\ViewExecutable $view */ $view = $this->entityTypeManager @@ -120,4 +142,11 @@ class PublicationAuthorsBlock extends BlockBase implements ContainerFactoryPlugi } + /** + * {@inheritdoc} + */ + protected function blockAccess(AccountInterface $account) { + return AccessResult::allowedIfHasPermission($account, 'edit bibcite_keyword'); + } + }