1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Console\Command;
- use Magento\Customer\Model\Customer;
- use Magento\Framework\Encryption\Encryptor;
- use Magento\Customer\Model\ResourceModel\Customer\Collection;
- use Magento\Customer\Model\ResourceModel\Customer\CollectionFactory;
- use Symfony\Component\Console\Command\Command;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Output\OutputInterface;
- class UpgradeHashAlgorithmCommand extends Command
- {
- /**
- * @var CollectionFactory
- */
- private $customerCollectionFactory;
- /**
- * @var Collection
- */
- private $collection;
- /**
- * @var Encryptor
- */
- private $encryptor;
- /**
- * @param CollectionFactory $customerCollectionFactory
- * @param Encryptor $encryptor
- */
- public function __construct(
- CollectionFactory $customerCollectionFactory,
- Encryptor $encryptor
- ) {
- parent::__construct();
- $this->customerCollectionFactory = $customerCollectionFactory;
- $this->encryptor = $encryptor;
- }
- /**
- * @inheritdoc
- */
- protected function configure()
- {
- $this->setName('customer:hash:upgrade')
- ->setDescription('Upgrade customer\'s hash according to the latest algorithm');
- }
- /**
- * @inheritdoc
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $this->collection = $this->customerCollectionFactory->create();
- $this->collection->addAttributeToSelect('*');
- $customerCollection = $this->collection->getItems();
- /** @var $customer Customer */
- foreach ($customerCollection as $customer) {
- $customer->load($customer->getId());
- if (!$this->encryptor->validateHashVersion($customer->getPasswordHash())) {
- list($hash, $salt, $version) = explode(Encryptor::DELIMITER, $customer->getPasswordHash(), 3);
- $version .= Encryptor::DELIMITER . Encryptor::HASH_VERSION_LATEST;
- $customer->setPasswordHash($this->encryptor->getHash($hash, $salt, $version));
- $customer->save();
- $output->write(".");
- }
- }
- $output->writeln(".");
- $output->writeln("<info>Finished</info>");
- }
- }
|