diff --git a/core/modules/announcements_feed/src/Plugin/Block/AnnounceBlock.php b/core/modules/announcements_feed/src/Plugin/Block/AnnounceBlock.php index 5540eac9ac7..997031bd12e 100644 --- a/core/modules/announcements_feed/src/Plugin/Block/AnnounceBlock.php +++ b/core/modules/announcements_feed/src/Plugin/Block/AnnounceBlock.php @@ -6,6 +6,7 @@ namespace Drupal\announcements_feed\Plugin\Block; use Drupal\announcements_feed\AnnounceRenderer; use Drupal\Core\Access\AccessResult; +use Drupal\Core\Access\AccessResultInterface; use Drupal\Core\Block\BlockBase; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Session\AccountInterface; @@ -34,37 +35,34 @@ class AnnounceBlock extends BlockBase implements ContainerFactoryPluginInterface * The plugin implementation definition. * @param \Drupal\announcements_feed\AnnounceRenderer $announceRenderer * The AnnounceRenderer service. - * @param \Drupal\Core\Session\AccountInterface $currentUser - * The current user. */ - public function __construct(array $configuration, $plugin_id, $plugin_definition, protected AnnounceRenderer $announceRenderer, protected AccountInterface $currentUser) { + public function __construct(array $configuration, $plugin_id, $plugin_definition, protected AnnounceRenderer $announceRenderer) { parent::__construct($configuration, $plugin_id, $plugin_definition); } /** * {@inheritdoc} */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition): static { return new static( $configuration, $plugin_id, $plugin_definition, - $container->get('announcements_feed.renderer'), - $container->get('current_user') + $container->get('announcements_feed.renderer') ); } /** * {@inheritdoc} */ - public function access(AccountInterface $account, $return_as_object = FALSE) { - return AccessResult::allowedIfHasPermission($this->currentUser, 'access announcements'); + public function blockAccess(AccountInterface $account): AccessResultInterface { + return AccessResult::allowedIfHasPermission($account, 'access announcements'); } /** * {@inheritdoc} */ - public function build() { + public function build(): array { return $this->announceRenderer->render(); } diff --git a/core/modules/announcements_feed/tests/src/FunctionalJavascript/AnnounceBlockTest.php b/core/modules/announcements_feed/tests/src/FunctionalJavascript/AnnounceBlockTest.php index d0497411282..a796ccf0b8d 100644 --- a/core/modules/announcements_feed/tests/src/FunctionalJavascript/AnnounceBlockTest.php +++ b/core/modules/announcements_feed/tests/src/FunctionalJavascript/AnnounceBlockTest.php @@ -5,6 +5,10 @@ declare(strict_types=1); namespace Drupal\Tests\announcements_feed\FunctionalJavascript; use Drupal\announce_feed_test\AnnounceTestHttpClientMiddleware; +use Drupal\block\BlockInterface; +use Drupal\Core\Access\AccessResultAllowed; +use Drupal\Core\Access\AccessResultNeutral; +use Drupal\Core\Session\AnonymousUserSession; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; /** @@ -30,9 +34,9 @@ class AnnounceBlockTest extends WebDriverTestBase { /** * The announce block instance. * - * @var \Drupal\block\Entity\Block + * @var \Drupal\block\BlockInterface */ - protected $announceBlock; + protected BlockInterface $announceBlock; /** * {@inheritdoc} @@ -48,11 +52,13 @@ class AnnounceBlockTest extends WebDriverTestBase { /** * Testing announce feed block visibility. */ - public function testAnnounceWithoutPermission() { - // User with "access announcements" permission. + public function testAnnounceWithoutPermission(): void { + // User with "access announcements" permission and anonymous session. $account = $this->drupalCreateUser([ 'access announcements', ]); + $anonymous_account = new AnonymousUserSession(); + $this->drupalLogin($account); $this->drupalGet(''); @@ -65,6 +71,12 @@ class AnnounceBlockTest extends WebDriverTestBase { $this->drupalLogout(); $assert_session->pageTextNotContains('Announcements Feed'); + // Test access() method return type. + $this->assertTrue($this->announceBlock->getPlugin()->access($account)); + $this->assertInstanceOf(AccessResultAllowed::class, $this->announceBlock->getPlugin()->access($account, TRUE)); + + $this->assertFalse($this->announceBlock->getPlugin()->access($anonymous_account)); + $this->assertInstanceOf(AccessResultNeutral::class, $this->announceBlock->getPlugin()->access($anonymous_account, TRUE)); } }