, Вам не нужно использовать контроллер пароля по умолчанию для достижения этой цели, вы можете написать свою собственную функцию, чтобы получить тот же результат, например:
public function postUpdatePassword() {
$user = Auth::user();
$password = $this->request->only([
'current_password', 'new_password', 'new_password_confirmation'
]);
$validator = Validator::make($password, [
'current_password' => 'required|current_password_match',
'new_password' => 'required|min:6|confirmed',
]);
if ($validator->fails())
return back()
->withErrors($validator)
->withInput();
$updated = $user->update([ 'password' => bcrypt($password['new_password']) ]);
if($updated)
return back()->with('success', 1);
return back()->with('success', 0);
}
Как вы можете видеть, что я зарегистрировал новый пользовательские правила проверки, чтобы проверить, если новый passowrd соответствует старый, чтобы зарегистрировать правило просто пойти в «приложение/Поставщики/AppServiceProvider.php» и добавить к функции загрузки следующие строки:
Validator::extend('current_password_match', function($attribute, $value, $parameters, $validator) {
return Hash::check($value, Auth::user()->password);
});
Теперь проверка правило работает, но вы не получите сообщение об ошибке, чтобы добавить сообщение об ошибке чтобы вы только что создали новое правило, вам придется изменить эти строки в «ресурсы/языки/EN/validation.php»:
'custom' => [
'current_password' => [
'current_password_match' => 'Current password is incorrect.',
],
],
Вот, теперь вы можете использовать эту функцию, чтобы изменить текущий пароль :)
выглядит хорошо, так что теперь мне просто нужно представление с формой с полями current_passoword, new_password и new_password_confirm и отправить его на эту функцию, верно? – nameless
Точно это единственное, что вам нужно сделать сейчас. –
получил это, спасибо большое :) – nameless