Возможно у вас нет токена в реквесте
'token' => $request->token
добавьте в валидатор 'token' => 'required', так как он является обязательным
$request->validate([
'token' => 'required',
'email' => 'required|email|exists:users',
'password' => 'required|string|min:6|confirmed',
]);
почему не использовать
Illuminate\Support\Facades\Password::reset() ?
https://laravel.com/docs/9.x/passwords#password-re...
upd
проблема с expire, subMinute() юзает одну минуту
$expire = Carbon::now()->subMinute(60);
надо так:
$expire = Carbon::now()->subMinutes(60);