но после обновления до Laravel 9 мой пароль автоматически сохраняется в расшифрованном виде.
Когда я печатаю расшифрованный пароль, он работает правильно, но в базе данных он сохраняется как исходный пароль.
Ниже приведен мой код.
Код: Выделить всё
class EmailConfiguration extends BaseModel
{
protected $table = 'email_configurations';
protected $guarded = [];
protected $json = ['configuration'];
protected static function boot()
{
parent::boot();
$jsonToString = function ($model) {
// Convert all json attributes to string before saving
foreach ($model->json as $attribute) {
$model->$attribute = json_encode($model->$attribute);
}
};
$stringToJson = function ($model) {
// Convert back all json attributes from strings
foreach ($model->json as $attribute) {
$data = json_decode($model->$attribute, true);
$data = $data ?: [];
// Use fluent interface
$model->$attribute = new Fluent($data);
}
};
static::saving($jsonToString);
static::saved($stringToJson);
static::loaded($stringToJson);
}
}
Код: Выделить всё
class EmailConfigurationRepository
{
public function save($data)
{
$config= [ 'username'=> $data['user_name'],'password' => Crypt::encryptString($data['password'])];
$configuration = new EmailConfiguration();
$configuration->user_id = $data['user_id'];
$configuration->configuration = $config;
$configuration->save();
return $configuration->refresh();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/74808560/laravel-cryptencryptstring-automatically-get-decrypted-while-saving-in-db[/url]
Мобильная версия