Я нашел решение самостоятельно.
Я попытался найти решение, которое было совершенно неверным, когда я разместил свой вопрос.Правильный вопрос: есть ли способ отключить хеширование пароля по требованию перед его вставкой в базу данных?
Я не знаю, является ли это лучшим решением.
Поскольку хеширование выполняетсяпо модели, поэтому я создал новую модель, которая указывает на ту же таблицу, что и модель пользователя.
src / Model / Table / NoHashPasswordUsersTable.php:
class NoHashPasswordUsersTable extends Table
{
public function initialize(array $config) {
// Set table to use
$this->table('users');
// or After Cakephp 3.4.0
//$this->setTable('users');
...
}
public function validationDefault(Validator $validator)
{
...
// Validation rules to check length of hashed string
$validator
->add('password', 'notEmpty', [
'rule' => ['lengthBetween', 60, 60],
'message' => __('Hashed password should contains 60 chars')
]);
return $validator;
}
}
Создание файла сущности src /Model / Entiry / NoHashPasswordUser.php, у которого нет функции _setPassword
В src / Controller / UsersController.php:
// Load model that allow to import Users without hashing the password
$this->loadModel('NoHashPasswordUsers');
...
// I can switch Model to use to hash or not hash the password, for example
$this->Users->save($user)
$this->NoHashPasswordUsers->save($user)