РекомендуетсяLaravelPHP

Laravel: Form Request и Policy

Валидируйте вход и отдельно проверяйте право на объект. В модель передавайте только разрешённые поля.

Проверено Изменено

Плохо

$order->update($request->all());

Хорошо

// Контроллер: UpdateOrderRequest проверяет title
Gate::authorize('update', $order);
$order->update($request->safe()->only(['title']));

Почему это важно

Проверка формата не даёт права редактировать чужой заказ. Поля вроде owner_id нельзя принимать из произвольного тела запроса.

Когда применять

Laravel 12.x, Form Request и зарегистрированная Policy; в модели настроен $fillable. Входящий DTO не заменяет объектную авторизацию.

Кто что делает

Человек

Определяет права ролей и редактируемые поля заказа.

AI-агент

Создаёт Form Request, Policy и тесты запрещённых полей/чужих объектов.

Пример применения

В кабинете клиент меняет название своего заказа. UpdateOrderRequest проверяет строку title, Policy сопоставляет владельца с текущим пользователем, контроллер записывает только title.

Как проверить у себя

  • Чужой заказ даёт отказ.
  • Лишние owner_id и is_paid не меняют запись.
ПервоисточникиИстория изменений на GitHub

Дата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.