![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-customer/Observer/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Observer; use Magento\Customer\Model\Customer; use Magento\Framework\Encryption\EncryptorInterface; use Magento\Framework\Event\ObserverInterface; use Magento\Customer\Api\CustomerRepositoryInterface; use Magento\Customer\Model\CustomerRegistry; /** * Class observer UpgradeCustomerPasswordObserver to upgrade customer password hash when customer has logged in */ class UpgradeCustomerPasswordObserver implements ObserverInterface { /** * Encryption model * * @var EncryptorInterface */ protected $encryptor; /** * @var CustomerRegistry */ private $customerRegistry; /** * @var CustomerRepositoryInterface */ private $customerRepository; /** * @param EncryptorInterface $encryptor * @param CustomerRegistry $customerRegistry * @param CustomerRepositoryInterface $customerRepository */ public function __construct( EncryptorInterface $encryptor, CustomerRegistry $customerRegistry, CustomerRepositoryInterface $customerRepository ) { $this->encryptor = $encryptor; $this->customerRegistry = $customerRegistry; $this->customerRepository = $customerRepository; } /** * Upgrade customer password hash when customer has logged in * * @param \Magento\Framework\Event\Observer $observer * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { $password = $observer->getEvent()->getData('password'); /** @var \Magento\Customer\Model\Customer $model */ $model = $observer->getEvent()->getData('model'); $customer = $this->customerRepository->getById($model->getId()); $customerSecure = $this->customerRegistry->retrieveSecureData($model->getId()); if (!$this->encryptor->validateHashVersion($customerSecure->getPasswordHash(), true)) { $customerSecure->setPasswordHash($this->encryptor->getHash($password, true)); // No need to validate customer and customer address while upgrading customer password $this->setIgnoreValidationFlag($customer); $this->customerRepository->save($customer); } } /** * Set ignore_validation_flag to skip unnecessary address and customer validation * * @param Customer $customer * @return void */ private function setIgnoreValidationFlag($customer) { $customer->setData('ignore_validation_flag', true); } }