我希望被阻止的用户不能执行密码重置链接,收到错误消息并被转发到页面。如果用户被阻止,则在表 user 中存储一个 2,处于活动状态。我怎样才能做到这一点?
我从 Laravel 找到了他们的代码:
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
*/
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$request->only('email')
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($response)
: $this->sendResetLinkFailedResponse($request, $response);
}
不需要覆盖sendResetLinkEmail
函数,你可以validateEmail
像这样覆盖
protected function validateEmail(Request $request)
{
$this->validate($request,
['email' => ['required','email',
Rule::exists('users')->where(function ($query) {
$query->where('active', 1);
})
]
]
);
}
或者
如果您想重定向到自定义 url,则sendResetLinkEmail
使用这样的手动验证覆盖函数
public function sendResetLinkEmail(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => ['required', 'email',
Rule::exists('users')->where(function ($query) {
$query->where('active', 1);
})
]
]);
if ($validator->fails()) {
return redirect('some_other_url')
->with('fail', 'You can not request reset password, account is block');
}
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$request->only('email')
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($response)
: $this->sendResetLinkFailedResponse($request, $response);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句