1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\User\Setup\Patch\Data;
- use Magento\Framework\Encryption\Encryptor;
- use Magento\Framework\App\ResourceConnection;
- use Magento\Framework\Setup\Patch\DataPatchInterface;
- use Magento\Framework\Setup\Patch\PatchVersionInterface;
- /**
- * Class UpgradePasswordHashes
- * @package Magento\User\Setup\Patch
- */
- class UpgradePasswordHashes implements DataPatchInterface, PatchVersionInterface
- {
- /**
- * @var \Magento\Framework\Setup\ModuleDataSetupInterface
- */
- private $moduleDataSetup;
- /**
- * PatchInitial constructor.
- * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
- */
- public function __construct(
- \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
- ) {
- $this->moduleDataSetup = $moduleDataSetup;
- }
- /**
- * {@inheritdoc}
- */
- public function apply()
- {
- $this->moduleDataSetup->getConnection()->startSetup();
- $this->upgradeHash();
- $this->moduleDataSetup->getConnection()->endSetup();
- }
- /**
- * {@inheritdoc}
- */
- public static function getDependencies()
- {
- return [];
- }
- /**
- * {@inheritdoc}
- */
- public static function getVersion()
- {
- return '2.0.1';
- }
- /**
- * {@inheritdoc}
- */
- public function getAliases()
- {
- return [];
- }
- /**
- * Upgrade password hashes.
- */
- private function upgradeHash()
- {
- $connection = $this->moduleDataSetup->getConnection();
- $customerEntityTable = $this->moduleDataSetup->getTable('admin_user');
- $select = $connection->select()->from(
- $customerEntityTable,
- ['user_id', 'password']
- );
- $customers = $connection->fetchAll($select);
- foreach ($customers as $customer) {
- list($hash, $salt) = explode(Encryptor::DELIMITER, $customer['password']);
- $newHash = $customer['password'];
- if (strlen($hash) === 32) {
- $newHash = implode(Encryptor::DELIMITER, [$hash, $salt, Encryptor::HASH_VERSION_MD5]);
- } elseif (strlen($hash) === 64) {
- $newHash = implode(Encryptor::DELIMITER, [$hash, $salt, Encryptor::HASH_VERSION_SHA256]);
- }
- $bind = ['password' => $newHash];
- $where = ['user_id = ?' => (int)$customer['user_id']];
- $connection->update($customerEntityTable, $bind, $where);
- }
- }
- }
|