Php 如何在laravel内置重置密码中考虑软删除
我想在laravel5.4内置重置密码中应用软删除。由于软删除的重复电子邮件,已删除的电子邮件密码已更改,但不正确。我坚持认为应用删除应该为空,而不是只检查电子邮件。这就是为什么它会获取删除的记录而不是正确的记录。下面给出了我的重置密码控制器。请检查我的重置控制器并建议任何解决方案Php 如何在laravel内置重置密码中考虑软删除,php,laravel,Php,Laravel,我想在laravel5.4内置重置密码中应用软删除。由于软删除的重复电子邮件,已删除的电子邮件密码已更改,但不正确。我坚持认为应用删除应该为空,而不是只检查电子邮件。这就是为什么它会获取删除的记录而不是正确的记录。下面给出了我的重置密码控制器。请检查我的重置控制器并建议任何解决方案 class ResetPasswordController extends Controller { use ResetsPasswords; protected $redirectTo = 'me
class ResetPasswordController extends Controller
{
use ResetsPasswords;
protected $redirectTo = 'member/welcome';
public function showResetForm(Request $request, $token = null)
{
return view('frontend.member.auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
public function reset(Request $request)
{
$this->validate($request, $this->rules(), $this->validationErrorMessages());
$response = $this->broker()->reset(
$this->credentials($request), function ($user, $password) {
$this->resetPassword($user, $password);
}
);
return $response == Password::PASSWORD_RESET
? $this->sendResetResponse($response)
: $this->sendResetFailedResponse($request, $response);
}
protected function rules()
{
return [
'token' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed|min:8|regex:/^.*(?=.{3,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[@!$#%^*()-_]).*$/',
];
}
/**
* Get the password reset validation error messages.
*
* @return array
*/
protected function validationErrorMessages()
{
return [
'password.regex' => 'The password must contain at least one uppercase, one lowercase, one number and one special(@!$#%...) character.'
];
}
protected function resetPassword($user, $password)
{
$password = app('hash')->needsRehash($password) ? Hash::make($password) : $password;
$user->forceFill([
'password' => $password,
'remember_token' => Str::random(60),
])->save();
$this->guard()->login($user);
}
public function broker()
{
return Password::broker('members');
}
protected function guard()
{
return Auth::guard('web_member');
}
}
请提前帮助,谢谢。我是新加入laravel的。请帮助。只需将正确的用户传递给resetPassword()函数,如
public function reset(Request $request)
{
$this->validate($request, $this->rules(), $this->validationErrorMessages());
$response = $this->broker()->reset(
$this->credentials($request), function ($user, $password) {
$user = User::where('email', $user->email)->whereNull('deleted_at')->first();
$this->resetPassword($user, $password);
}
);
return $response == Password::PASSWORD_RESET
? $this->sendResetResponse($response)
: $this->sendResetFailedResponse($request, $response);
}
一个可能的解决方案是在resetPassword函数中获取正确的用户并替换该用户。