Magento 2: Изменение минимальной длины пароля клиента по умолчанию от администратора не работает. (Похоже на ошибку)


Я изменил минимальную длину пароля по умолчанию со стороны администратора, но все равно не могу сохранить клиента из внешнего интерфейса.Длина по умолчанию, по-видимому, берется из какой-то основной константы.

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