krgm.so-manager-dev.com/app/Http/Controllers/Auth/ForgotPasswordController.php
你的名字 e1254515ff
All checks were successful
Deploy preview (main_ou) / deploy (push) Successful in 11s
初回コミット&一部不要なソース削除
2025-08-29 10:52:05 +09:00

61 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
class ForgotPasswordController extends Controller
{
// パスワードリセット申請画面表示
public function showLinkRequestForm()
{
return view('auth.forgot-password');
}
// リセットメール送信
public function sendResetLinkEmail(Request $request)
{
$request->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', 'パスワード再設定メールを送信しました。');
}
}