diff --git a/core/modules/user/src/AccountForm.php b/core/modules/user/src/AccountForm.php index 07725a83ed7bc28e244ac4ef1505e242469e6e93..bd8427ecc8546e77d9aa23b4b4dc4eb2cc5b1193 100644 --- a/core/modules/user/src/AccountForm.php +++ b/core/modules/user/src/AccountForm.php @@ -157,9 +157,12 @@ public function form(array $form, FormStateInterface $form_state) { ]; $form_state->set('user', $account); - // The user may only change their own password without their current - // password if they logged in via a one-time login link. - if (!$form_state->get('user_pass_reset')) { + // If logged in via a one-time login link entering a new password is + // required and the user does not need to enter their current password. + if ($form_state->get('user_pass_reset')) { + $form['account']['pass']['#required'] = TRUE; + } + else { $form['account']['current_pass']['#description'] = $this->t('Required if you want to change the <em>Email address</em> or the <em>Password</em> field below. <a href=":request_new_url" title="Send password reset instructions via email.">Reset your password</a>.', [ ':request_new_url' => Url::fromRoute('user.pass')->toString(), ]); diff --git a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php index 7ad09f53748b0fb515c2de68d702405d508a9601..9f1eccf6b1b50e9786470372d9a681f8b96ea1ac 100644 --- a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php +++ b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php @@ -138,6 +138,10 @@ public function testUserPasswordReset(): void { $this->assertSession()->linkExists('Log out'); $this->assertSession()->titleEquals($this->account->getAccountName() . ' | Drupal'); + // Try to save without entering password. + $this->submitForm([], 'Save'); + $this->assertSession()->pageTextContains('Password field is required.'); + // Change the forgotten password. $password = \Drupal::service('password_generator')->generate(); $edit = ['pass[pass1]' => $password, 'pass[pass2]' => $password];