Skip to content
Snippets Groups Projects
Verified Commit 079b65a2 authored by Dave Long's avatar Dave Long
Browse files

Issue #3444978 by catch, Berdir: UserAuth BC layer is not working for modules...

Issue #3444978 by catch, Berdir: UserAuth BC layer is not working for modules that use it to provide email based logins

(cherry picked from commit 26208e91)
parent 1213712a
No related branches found
No related tags found
43 merge requests!10663Issue #3495778: Update phpdoc in FileSaveHtaccessLoggingTest,!10451Issue #3472458 by watergate, smustgrave: CKEditor 5 show blocks label is not translated,!103032838547 Fix punctuation rules for inline label suffix colon with CSS only,!10150Issue #3467294 by quietone, nod_, smustgrave, catch, longwave: Change string...,!10130Resolve #3480321 "Second level menu",!9936Issue #3483087: Check the module:// prefix in the translation server path and replace it with the actual module path,!9933Issue #3394728 by ankondrat4: Undefined array key "#prefix" and deprecated function: explode() in Drupal\file\Element\ManagedFile::uploadAjaxCallback(),!9914Issue #3451136 by quietone, gapple, ghost of drupal past: Improve...,!9882Draft: Issue #3481777 In bulk_form ensure the triggering element is the bulk_form button,!9839Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9815Issue #3480025: There is no way to remove entity cache items,!9757Issue #3478869 Add "All" or overview links to parent links,!9752Issue #3439910 by pooja_sharma, vensires: Fix Toolbar tests that rely on UID1's super user behavior,!9749Issue #3439910 by pooja_sharma, vensires: Fix Toolbar tests that rely on UID1's super user behavior,!9678Issue #3465132 by catch, Spokje, nod_: Show test run time by class in run-tests.sh output,!9578Issue #3304746 by scott_euser, casey, smustgrave: BigPipe cannot handle (GET)...,!9449Issue #3344041: Allow textarea widgets to be used for text (formatted) fields,!8945🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥...,!8893Resolve #3444391 "Navigation center sm logo",!8772Issue #3445909 by seanB, smustgrave, alexpott, catch: Add static caching to...,!8723Make dblog entities,!8708Filter out disabled display extenders on save,!8691#3459116 - Update Manager Settings: Validate same email address added multiple times,!8665Issue #3449743 by catch: Try to optimize test ordering when run-tests.sh is...,!8598Draft: Issue #3458215: Migrate Toolbar button to SDC,!8572Reorder checkboxes on "Development settings" page,!8538Issue #3457009: Fixing xxception message thrown.,!8516Update file EntityReferenceItem.php,!8505Issue #3456528: _node_mass_update_batch_process fails during user cancel when revision is deleted,!8494Issue #3452511: Convert ProviderRepositoryTest to a kernel test,!8482Resolve #3456202 "Phpunit tests support",!8463Prevent re-install if site already exists,!8392Issue #3454196: Filter placeholders without arguments are not replaced when HTML corrector filter applied afterwards,!8384Issue #3446403 by edutrul, jnicola, mradcliffe: [name]: This field is missing for example recipe,!8304Issue #2990766 by camilledavis, Gauravvvv, mgifford: Location of "Skip to...,!8178Issue #3439909 by SolimanHarkas, vensires: Fix Taxonomy tests that rely on...,!8138Remove inactive initiatives from maintainers list,!8078Issue #3439909 by SolimanHarkas, vensires: Fix Taxonomy tests that rely on...,!8065Adds Default Content and Recipes Subsystems,!8047Issue #3439909 by SolimanHarkas, vensires: Fix Taxonomy tests that rely on...,!7974Issue #3439909 by SolimanHarkas, vensires: Fix Taxonomy tests that rely on...,!7972Issue #3439909 by SolimanHarkas, vensires: Fix Taxonomy tests that rely on...,!5829Porting tabledrag CSS refactor from D10 branch
Pipeline #167276 passed
Pipeline: drupal

#167300

    Pipeline: drupal

    #167293

      Pipeline: drupal

      #167281

        ......@@ -232,10 +232,10 @@ public function validateAuthentication(array &$form, FormStateInterface $form_st
        if ($this->userAuth instanceof UserAuthenticationInterface) {
        $form_state->set('uid', $this->userAuth->authenticateAccount($account, $password) ? $account->id() : FALSE);
        }
        else {
        $uid = $this->userAuth->authenticate($form_state->getValue('name'), $password);
        $form_state->set('uid', $uid);
        }
        }
        elseif (!$this->userAuth instanceof UserAuthenticationInterface) {
        $uid = $this->userAuth->authenticate($form_state->getValue('name'), $password);
        $form_state->set('uid', $uid);
        }
        }
        }
        ......
        ......@@ -8,7 +8,7 @@
        /**
        * Validates user authentication credentials.
        */
        class UserAuth implements UserAuthInterface, UserAuthenticationInterface {
        class UserAuth implements UserAuthInterface {
        /**
        * The entity type manager.
        ......@@ -33,6 +33,7 @@ class UserAuth implements UserAuthInterface, UserAuthenticationInterface {
        * The password service.
        */
        public function __construct(EntityTypeManagerInterface $entity_type_manager, PasswordInterface $password_checker) {
        @trigger_error(__CLASS__ . ' is deprecated in drupal:10.3.0 and will be removed from drupal:12.0.0. Implement \Drupal\user\UserAuthenticationInterface instead. See https://www.drupal.org/node/3411040');
        $this->entityTypeManager = $entity_type_manager;
        $this->passwordChecker = $password_checker;
        }
        ......@@ -48,41 +49,20 @@ public function authenticate($username, #[\SensitiveParameter] $password) {
        $account_search = $this->entityTypeManager->getStorage('user')->loadByProperties(['name' => $username]);
        if ($account = reset($account_search)) {
        if ($this->authenticateAccount($account, $password)) {
        if ($this->passwordChecker->check($password, $account->getPassword())) {
        // Successful authentication.
        $uid = $account->id();
        }
        }
        }
        return $uid;
        }
        /**
        * {@inheritdoc}
        */
        public function lookupAccount($identifier): UserInterface|false {
        if (!empty($identifier)) {
        $account_search = $this->entityTypeManager->getStorage('user')->loadByProperties(['name' => $identifier]);
        if ($account = reset($account_search)) {
        return $account;
        // Update user to new password scheme if needed.
        if ($this->passwordChecker->needsRehash($account->getPassword())) {
        $account->setPassword($password);
        $account->save();
        }
        }
        }
        }
        return FALSE;
        }
        /**
        * {@inheritdoc}
        */
        public function authenticateAccount(UserInterface $account, #[\SensitiveParameter] string $password): bool {
        if ($this->passwordChecker->check($password, $account->getPassword())) {
        // Update user to new password scheme if needed.
        if ($this->passwordChecker->needsRehash($account->getPassword())) {
        $account->setPassword($password);
        $account->save();
        }
        return TRUE;
        }
        return FALSE;
        return $uid;
        }
        }
        <?php
        namespace Drupal\user;
        use Drupal\Core\Entity\EntityTypeManagerInterface;
        use Drupal\Core\Password\PasswordInterface;
        /**
        * Validates user authentication credentials.
        */
        class UserAuthentication implements UserAuthInterface, UserAuthenticationInterface {
        /**
        * The entity type manager.
        *
        * @var \Drupal\Core\Entity\EntityTypeManagerInterface
        */
        protected $entityTypeManager;
        /**
        * The password hashing service.
        *
        * @var \Drupal\Core\Password\PasswordInterface
        */
        protected $passwordChecker;
        /**
        * Constructs a UserAuth object.
        *
        * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
        * The entity type manager.
        * @param \Drupal\Core\Password\PasswordInterface $password_checker
        * The password service.
        */
        public function __construct(EntityTypeManagerInterface $entity_type_manager, PasswordInterface $password_checker) {
        $this->entityTypeManager = $entity_type_manager;
        $this->passwordChecker = $password_checker;
        }
        /**
        * {@inheritdoc}
        */
        public function authenticate($username, #[\SensitiveParameter] $password) {
        @trigger_error(__METHOD__ . ' is deprecated in drupal:10.3.0 and will be removed from drupal:12.0.0. Implement \Drupal\user\UserAuthenticationInterface instead. See https://www.drupal.org/node/3411040');
        $uid = FALSE;
        if (!empty($username) && strlen($password) > 0) {
        $account_search = $this->entityTypeManager->getStorage('user')->loadByProperties(['name' => $username]);
        if ($account = reset($account_search)) {
        if ($this->authenticateAccount($account, $password)) {
        $uid = $account->id();
        }
        }
        }
        return $uid;
        }
        /**
        * {@inheritdoc}
        */
        public function lookupAccount($identifier): UserInterface|false {
        if (!empty($identifier)) {
        $account_search = $this->entityTypeManager->getStorage('user')->loadByProperties(['name' => $identifier]);
        if ($account = reset($account_search)) {
        return $account;
        }
        }
        return FALSE;
        }
        /**
        * {@inheritdoc}
        */
        public function authenticateAccount(UserInterface $account, #[\SensitiveParameter] string $password): bool {
        if ($this->passwordChecker->check($password, $account->getPassword())) {
        // Update user to new password scheme if needed.
        if ($this->passwordChecker->needsRehash($account->getPassword())) {
        $account->setPassword($password);
        $account->save();
        }
        return TRUE;
        }
        return FALSE;
        }
        }
        ......@@ -43,7 +43,7 @@ services:
        tags:
        - { name: theme_negotiator, priority: -40 }
        user.auth:
        class: Drupal\user\UserAuth
        class: Drupal\user\UserAuthentication
        arguments: ['@entity_type.manager', '@password']
        Drupal\user\UserAuthInterface: '@user.auth'
        user.permissions:
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment