Страница, доступная в указанный период

Если надо сделать, чтобы страница или код был доступен в указанный период времени (например для подтверждения емайла или кода), то это можно сделать через метод URL::temporarySignedRoute()

# в любом месте кода в контроллере
use Illuminate\Support\Facades\URL;

// …
URL::temporarySignedRoute('eventApprove', now()->addMinutes(30), ['email' => 'name@example.ru']);

Код сгенерирует примерно следующую ссылку «https://sitename.ru/news?email=name%40example2.ru&expires=1737903869&signature=f8dfaa7b522d390ca28407c06c0ac3190d936335d275eb7bfcb9c18c1fd1b467».

Здесь стоит обратить внимание, что в строке запроса есть два параметра, «email» и «expired». Если изменить хотя бы один параметр, то код вернёт, что токен с данным параметром некорректен.

Чтобы страница была доступна только по токену, в настройках рута надо добавить middleware('signed').

# routes/web.php

Route::get('/event/approve', [EventController::class, 'approve'])->name('eventApprove')->middleware('signed');

В случае если токен будет некорректный или срок действия токена истечёт, Laravel вернёть страницу со статусом «403».

Или можно проверить токен вручную:

# контроллер
use Illuminate\Http\Request;

// …
public function approve(Request $request)
{
  if ($request->hasValidSignature()) {
    // токен корректный
  } else {
    // токен не корректный
  }
}