diff --git a/core/modules/user/src/Plugin/rest/resource/UserRegistrationResource.php b/core/modules/user/src/Plugin/rest/resource/UserRegistrationResource.php index 6a243c3a1d..920fc4f135 100644 --- a/core/modules/user/src/Plugin/rest/resource/UserRegistrationResource.php +++ b/core/modules/user/src/Plugin/rest/resource/UserRegistrationResource.php @@ -102,7 +102,7 @@ public function post(UserInterface $account = NULL) { // Only activate new users if visitors are allowed to register and no email // verification required. - if ($this->userSettings->get('register') == USER_REGISTER_VISITORS && !$this->userSettings->get('verify_mail')) { + if ($this->userSettings->get('register') == USER_REGISTER_VISITORS) { $account->activate(); } else { diff --git a/core/modules/user/src/Tests/RestRegisterUserTest.php b/core/modules/user/src/Tests/RestRegisterUserTest.php index 450c552919..f25fad5680 100644 --- a/core/modules/user/src/Tests/RestRegisterUserTest.php +++ b/core/modules/user/src/Tests/RestRegisterUserTest.php @@ -72,7 +72,7 @@ public function testRegisterUser() { $user_settings->save(); $user = $this->registerUser('Jason.Taverner', FALSE); $this->assertTrue(empty($user->getPassword())); - $this->assertTrue($user->isBlocked()); + $this->assertTrue($user->isActive()); $this->assertMailString('body', 'You may now log in by clicking this link', 1); // Attempt to register with a password when e-mail verification is on. diff --git a/core/modules/user/src/Tests/UserRegistrationTest.php b/core/modules/user/src/Tests/UserRegistrationTest.php index 128b71b7da..e27b801740 100644 --- a/core/modules/user/src/Tests/UserRegistrationTest.php +++ b/core/modules/user/src/Tests/UserRegistrationTest.php @@ -62,6 +62,28 @@ public function testRegistrationWithEmailVerification() { $this->assertFalse($new_user->isActive(), 'New account is blocked until approved by an administrator.'); } + public function testRegistrationWithEmailVerificationAndWithoutAdminApproval() { + $config = $this->config('user.settings'); + // Require email verification. + $config->set('verify_mail', TRUE)->save(); + + // Allow registration by site visitors. + $config->set('register', USER_REGISTER_VISITORS)->save(); + $this->drupalGet('user/register'); + $edit = []; + $edit['name'] = $name = $this->randomMachineName(); + $edit['mail'] = $mail = $edit['name'] . '@example.com'; + $edit['pass[pass1]'] = $new_pass = $this->randomMachineName(); + $edit['pass[pass2]'] = $new_pass; + $this->drupalPostForm(NULL, $edit, t('Create new account')); + + // Check user fields. + $accounts = $this->container->get('entity_type.manager')->getStorage('user') + ->loadByProperties(['name' => $name, 'mail' => $mail]); + $new_user = reset($accounts); + $this->assertTrue($new_user->isActive(), 'New account is active so the user can access password reset page.'); + } + public function testRegistrationWithoutEmailVerification() { $config = $this->config('user.settings'); // Don't require email verification and allow registration by site visitors