diff --git a/core/modules/user/src/Plugin/Block/UserLoginBlock.php b/core/modules/user/src/Plugin/Block/UserLoginBlock.php index 3831dd7e640625b0e709f914cc1ef12b6ad735af..846f22ebed654dce50acb9e8f5a4bd1466dd1883 100644 --- a/core/modules/user/src/Plugin/Block/UserLoginBlock.php +++ b/core/modules/user/src/Plugin/Block/UserLoginBlock.php @@ -77,7 +77,7 @@ public static function create(ContainerInterface $container, array $configuratio */ protected function blockAccess(AccountInterface $account) { $route_name = $this->routeMatch->getRouteName(); - if ($account->isAnonymous() && !in_array($route_name, array('user.register', 'user.login', 'user.logout'))) { + if ($account->isAnonymous() && !in_array($route_name, array('user.login', 'user.logout'))) { return AccessResult::allowed() ->addCacheContexts(['route.name', 'user.roles:anonymous']); } diff --git a/core/modules/user/src/Tests/UserBlocksTest.php b/core/modules/user/src/Tests/UserBlocksTest.php index 9ac5ae9d7493ef5d3d5c87ea83ca52f6de829396..f16e31e3d15dab92cf6828b6addba264ef9e5acc 100644 --- a/core/modules/user/src/Tests/UserBlocksTest.php +++ b/core/modules/user/src/Tests/UserBlocksTest.php @@ -39,6 +39,30 @@ protected function setUp() { $this->drupalLogout($this->adminUser); } + /** + * Tests that user login block is hidden from user/login. + */ + function testUserLoginBlockVisibility() { + // Array keyed list where key being the URL address and value being expected + // visibility as boolean type. + $paths = [ + 'node' => TRUE, + 'user/login' => FALSE, + 'user/register' => TRUE, + 'user/password' => TRUE, + ]; + foreach ($paths as $path => $expected_visibility) { + $this->drupalGet($path); + $elements = $this->xpath('//div[contains(@class,"block-user-login-block") and @role="form"]'); + if ($expected_visibility) { + $this->assertTrue(!empty($elements), 'User login block in path "' . $path . '" should be visible'); + } + else { + $this->assertTrue(empty($elements), 'User login block in path "' . $path . '" should not be visible'); + } + } + } + /** * Test the user login block. */