Как правильно хешировать пароль Laravel? Создание пользователя через админ панель
Пытаюсь создать нового пользователя через админ панель, но при создании пароля, видимо, что-то делаю не так, т.к сам пароль хешируется, но в базу данных попадает не хешированным
Я понимаю, что что-то где-то не дописал, но что и где?
Контроллер для создания нового пользователя
public function store(AuthorFormRequest $request)
{
if($request->input('password')){
$hash = Hash::make($request->input('password'));
}
User::create($request->validated());
return redirect(route('authors'));
}
Форма запросов
public function rules()
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8'],
];
}
Ответы (1 шт):
Автор решения: Vladimir Gonchar
→ Ссылка
Ну Вы правильно говорите, Вы хешируете пароль, а дальше что? Вы его никуда не записали. Но зато в validated сырые данные, отчего Вы и получаете в базе пароль как есть.
Вариант "в лоб":
User::create($request->validated() + [
'password' => Hash::make($request->password),
]);
Вариант (совсем немного) посложнее:
Модель User
public function setPasswordAttribute($value)
{
$this->attributes['password'] = Hash::make($value);
}
В контроллере без изменений
User::create($request->validated());