laravelデフォルトuser table softdelete以外のemailですでに登録済みユーザーかどうか判断する。追加条件で登録済みユーザーを判断したい場面もでてくる。その際、sendResetLinkEmail functionをoverwriteすれば良い。
下記のように、app\Http\Controllers\Auth\ForgotPasswordController.php はtrait SendsPasswordResetEmails(vendor\laravel\framework\src\Illuminate\Foundation\Auth\SendsPasswordResetEmails.php)を使用している。
use SendsPasswordResetEmails
登録済みのemailかどうかについて、sendResetLinkEmail functionの中で行っている。
/**
* overwrite SendsPasswordResetEmails function in ForgotPasswordController.php
*/
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$request->merge(['type' => 0]); // 条件追加:type 0のユーザーのみ登録済みかどうか判断
$response = $this->broker()->sendResetLink(
$request->only('email', 'type') // ここでemail以外、type値も追加
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($request, $response)
: $this->sendResetLinkFailedResponse($request, $response);
}