Magento 2: Изменение минимальной длины пароля клиента по умолчанию от администратора не работает. (Похоже на ошибку)
Я изменил минимальную длину пароля по умолчанию со стороны администратора, но все равно не могу сохранить клиента из внешнего интерфейса.Длина по умолчанию, по-видимому, берется из какой-то основной константы.
1
Author: M Shoaib Qureshi, 2017-07-25
2 answers
Какая у вас версия Magento?
Вы очистили кэш после изменения конфигурации?
Кэш Bin/magento: очистить
0
Author: Mathieu, 2017-07-26 05:37:31
У меня есть решение для этого. Файл, в котором объявлена константа, имеет вид
КОНСТАНТА, которая переопределяет конфигурацию администратора:
const MIN_PASSWORD_LENGTH = 6;
Путь к файлу:
/vendor/magento/module-customer/Model/Customer/Attribute/Backend/Password.php
Сделал свой собственный файл здесь:
/app/code/Vendor/Module/Model/Customer/Attribute/Backend/Password.php
Вот мой код файла:
<?php
namespace Vendor\Module\Model\Customer\Attribute\Backend;
use Magento\Framework\Exception\LocalizedException;
/**
* Customer password attribute backend
*/
class Password extends \Magento\Customer\Model\Customer\Attribute\Backend\Password
{
/**
* Min password length
*/
const MIN_PASSWORD_LENGTH = 5;
/**
* Magento string lib
*
* @var \Magento\Framework\Stdlib\StringUtils
*/
protected $string;
/**
* @param \Magento\Framework\Stdlib\StringUtils $string
*/
public function __construct(\Magento\Framework\Stdlib\StringUtils $string)
{
$this->string = $string;
}
/**
* Special processing before attribute save:
* a) check some rules for password
* b) transform temporary attribute 'password' into real attribute 'password_hash'
*
* @param \Magento\Framework\DataObject $object
* @return void
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave($object)
{
$password = $object->getPassword();
$length = $this->string->strlen($password);
if ($length > 0) {
if ($length < self::MIN_PASSWORD_LENGTH) {
throw new LocalizedException(
__('Please enter a password with at least %1 characters.', self::MIN_PASSWORD_LENGTH)
);
}
if (trim($password) !== $password) {
throw new LocalizedException(__('The password can not begin or end with a space.'));
}
$object->setPasswordHash($object->hashPassword($password));
}
}
/**
* @param \Magento\Framework\DataObject $object
* @return bool
*/
public function validate($object)
{
$password = $object->getPassword();
if ($password && $password === $object->getPasswordConfirm()) {
return true;
}
return parent::validate($object);
}
}
0
Author: M Shoaib Qureshi, 2017-07-26 05:44:53