Почему-то не работает восстановление пароля, выдает, что ссылка устарела, хотя создана только что, и в базе есть запись для восстановления пароля. Токен и почта сходятся в базе и форме. Почему так происходит? Помогите, пожалуйста, найти ошибку.
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
use App\Models\User;
class ResetPasswordController extends Controller
{
public function __construct()
{
$this->middleware('guest');
}
public function form($token, $email){
return view('auth.reset-password', compact('email', 'token'));
}
public function reset(Request $request) {
$request->validate([
'email' => 'required|email|exists:users',
'password' => 'required|string|min:6|confirmed',
]);
// удаляем старые записи из таблицы сброса паролей
$expire = Carbon::now()->subMinute(60);
DB::table('password_resets')
->where('created_at', '<', $expire)
->delete();
// если ссылка на восстановления была отправлена
$row = DB::table('password_resets')
->where([
'email' => $request->email,
'token' => $request->token,
])
->first();
// если ссылка уже устарела, то ничего не делаем
if(!$row) {
return back()->withErrors('Ссылка восстановления пароля устарела');
}
// устанавливаем новый пароль для пользователя
User::where('email', $request->email)
->update(['password' => Hash::make($request->password)]);
// удаляем пользователя из таблицы сброса паролей
DB::table('password_resets')->where(['email'=> $request->email])->delete();
return redirect()
->route('auth.login')
->with('success', 'Ваш пароль был успешно изменен');
}
}