From 18802aaa64599df52d4b4fe79da7a1ba4b0cc0cc Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Sat, 26 Sep 2015 14:10:52 +0200 Subject: [PATCH] Issue #893868 by ericbroder, jaxxed, iMiksu, yogen.prasad, a.ross, mrfelton, VM, lauriii, Jasu_M: Login block not shown on user/register --- .../user/src/Plugin/Block/UserLoginBlock.php | 2 +- .../modules/user/src/Tests/UserBlocksTest.php | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/core/modules/user/src/Plugin/Block/UserLoginBlock.php b/core/modules/user/src/Plugin/Block/UserLoginBlock.php index 3831dd7e640..846f22ebed6 100644 --- a/core/modules/user/src/Plugin/Block/UserLoginBlock.php +++ b/core/modules/user/src/Plugin/Block/UserLoginBlock.php @@ -77,7 +77,7 @@ class UserLoginBlock extends BlockBase implements ContainerFactoryPluginInterfac */ 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 9ac5ae9d749..f16e31e3d15 100644 --- a/core/modules/user/src/Tests/UserBlocksTest.php +++ b/core/modules/user/src/Tests/UserBlocksTest.php @@ -39,6 +39,30 @@ class UserBlocksTest extends WebTestBase { $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. */