$request->query('email'), ]); } public function store(Request $request) { $request->validate([ 'email' => ['required', 'email'], 'code' => ['required', 'digits:6'], 'password' => ['required', 'confirmed', PasswordRule::min(8)], ]); $resetData = DB::table('password_reset_tokens')->where('email', $request->email)->first(); $isCodeExpired = !$resetData || now()->diffInMinutes(Carbon::parse($resetData->created_at)) > 15; if ($isCodeExpired || !Hash::check($request->code, $resetData->token)) { throw ValidationException::withMessages([ 'code' => 'Kode verifikasi tidak valid atau sudah kedaluwarsa.', ]); } DB::table('users') ->where('email', $request->email) ->update([ 'password' => Hash::make($request->password), 'remember_token' => Str::random(60), 'updated_at' => now(), ]); DB::table('password_reset_tokens')->where('email', $request->email)->delete(); return redirect()->route('login')->with('success', 'Password berhasil direset. Silakan login kembali.'); } }