validate([ 'email' => 'required|email', 'email_confirmation' => 'required|email|same:email', ], [ 'email.required' => 'メールアドレスを入力してください。', 'email.email' => '正しいメールアドレス形式で入力してください。', 'email_confirmation.required' => '確認用メールアドレスを入力してください。', 'email_confirmation.email' => '正しいメールアドレス形式で入力してください。', 'email_confirmation.same' => 'メールアドレスが一致しません。', ]); // ope_mailでユーザーを検索 $user = \App\Models\Ope::where('ope_mail', $request->input('email'))->first(); if (!$user) { return back()->withErrors(['email' => '該当するユーザーが見つかりません。']); } // トークン生成 $token = Str::random(60); // トークン保存(既存レコードがあれば更新) DB::table('password_reset_tokens')->updateOrInsert( ['ope_mail' => $user->ope_mail], [ 'token' => $token, 'created_at' => now(), ] ); // メール送信 $resetUrl = url('/reset-password?token=' . $token . '&email=' . urlencode($user->ope_mail)); Mail::raw("下記URLからパスワード再設定を行ってください。\n\n{$resetUrl}", function ($message) use ($user) { $message->to($user->ope_mail) ->subject('パスワード再設定のご案内'); }); return back()->with('status', 'パスワード再設定メールを送信しました。'); } }