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("Finished"); } }