Хэш-пароль перед сохранением в Laravel Backpacker

Простой вопрос: как изменить (хешировать) значение запроса перед его сохранением с помощью администратора Laravel Backpacker CRUD?

Насколько я понимаю, это нужно сделать где-то до того, как эти методы будут выполнены в контроллере crud:

public function store(StoreRequest $request)
{
return parent::storeCrud();
}

public function update(UpdateRequest $request)
{
return parent::updateCrud();
}

но я понятия не имею, как это сделать правильно.

редактировать: запрос не Request объект, а скорее StoreRequest или же UpdateRequest это выглядит примерно так:
введите описание изображения здесь

исправлять:

public function update(UpdateRequest $request)
{
// Hash password before save
if (!empty($request->password)) {
$request->offsetSet('password', Hash::make($request->password));
}

return parent::updateCrud($request); // <-- Pass the modified request, otherwise the CRUD reads it again from post data
}

2

Решение

Вы можете обновить значения $ request, используя offsetSet метод

$request->offsetSet('name', $newName);

Редактировать: Чтобы обновить пароль пользователя, вы можете сделать что-то вроде этого:

public function update_password(Request $request)
{
$user = User::find(Auth::user()->id);

if (Hash::check($request->old_password, $user->password)) {
$user->fill([
'password' => Hash::make($request->password)
])->update();

return redirect()->back()->with('message' => 'Your password has been updated.');
}
else {
return redirect()->back()->with('message' => 'The password entered do not match our records.');
}
}

Я не проверял код, но он должен работать. Теперь обновите его в соответствии с вашими потребностями.

2

Другие решения

Если вы спрашиваете о том, как изменить данные в $request переменная, вы можете просто сделать это:

$request->property = 'New value';

Также вы можете добавить данные для повторного запроса (не в переменную):

request()->request->add(['key' => 'value']);
2

По вопросам рекламы [email protected]