您实际上不需要使用默认密码控制器来实现这一点,您可以编写自己的函数来获得相同的结果,例如:
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);
}
如您所见,我注册了一个新的自定义验证规则来检查新密码是否与旧密码匹配,注册规则只需转到“app/Providers/AppServiceProvider.php”并将下一行添加到引导功能:
Validator::extend('current_password_match', function($attribute, $value, $parameters, $validator) {
return Hash::check($value, Auth::user()->password);
});
现在验证规则有效,但您不会收到错误消息,要向刚刚创建的新规则添加错误消息,您必须在“resources/lang/en/validation.php”中修改这些行:
'custom' => [
'current_password' => [
'current_password_match' => 'Current password is incorrect.',
],
],
就是这样,现在您可以使用此功能更改您当前的用户密码:)