2016-05-18 4 views
1

Я перемещаю приложение для электронной коммерции из Laravel в Magento. Приложение Laravel использует хэширование пароля Laravel по умолчанию, которое, как я понимаю, использует Bcrypt.Импортировать пароли пользователя Laravel в пароли Magento

Импорт клиентов Magento позволяет импортировать хеш-пароль, но я думаю, что Magento использует MD5. Поэтому, конечно, когда пользователь пытается войти в систему, Magento сравнивает хэш MD5 с Bcrypt.

Кто-нибудь знает об этом? Можно ли настроить Magento на использование такого же хэширования Bcrypt, что и Laravel? Или иначе «конвертировать» в хэши Laravel на то, что Magento может понять?

Большое спасибо

+0

Вы, конечно, не может «преобразовать» хэши; и я не знаю ни одного плагина Magento, который позволит ему работать с password_hash()/password_verify() –

ответ

2

Продлить модель клиента «Mage_Customer_Model_Customer» и записать что-то вроде этого:

class Namespace_Modulename_Model_Customer_Customer extends Mage_Customer_Model_Customer 
{ 
    public function authenticate($login, $password) 
    { 
     $this->loadByEmail($login); 
     if ($this->getConfirmation() && $this->isConfirmationRequired()) { 
      throw Mage::exception('Mage_Core', Mage::helper('customer')->__('This account is not confirmed.'), 
       self::EXCEPTION_EMAIL_NOT_CONFIRMED 
      ); 
     } 
     if (!$this->validatePassword($password)) { 
      $hash=$this->getPasswordHash(); 
      if(!$this->YourCustomFunctionForPasswordCheck($password,$hash)) 
      { 
       throw Mage::exception('Mage_Core', Mage::helper('customer')->__('Invalid login or password.'), 
        self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD 
       ); 
      } 
     } 

     Mage::dispatchEvent('customer_customer_authenticated', array(
      'model' => $this, 
      'password' => $password, 
     )); 

     return true; 
    } 
    public function YourCustomFunctionForPasswordCheck($password, $hash) 
    { 
     //Custom code for password check like Laravel. 
    } 
} 
Смежные вопросы