Разработчикам · 2 МИН ЧТЕНИЯ

Actions и безопасные изменения данных

Используйте единый административный контракт и проверяйте права до сохранения.

Перед началом

Определите, читает ли endpoint данные или изменяет их. Для административных мутаций используйте предусмотренный базовый класс или контракт.

Порядок действий

  1. Разместите frontend action в Actions, backend — в Backend/Actions соответствующего компонента. Имя файла должно совпадать с классом.
  2. Для чистой административной мутации используйте AdminMutationAction либо компонентную базу с AdminMutationActionContract.
  3. Если action показывает GET-форму и обрабатывает POST, вызовите enforceAdminMutationContract() в изменяющей ветке.
  4. Получайте входные значения через RequestService с типом. Дополнительно проверьте принадлежность объекта и ограничения конкретного компонента.
  5. После redirect, ошибки или другого терминального ответа явно завершите метод, если выполнение может продолжиться.
  6. Проверьте разрешённое сохранение и отказы для GET, неверного CSRF и недостаточных прав.
Обратите внимание. Не собирайте административные guard-проверки вручную в каждом action. Общий контракт должен выполняться до бизнес-логики.

Проверьте результат

Запрос с корректными правами сохраняет данные один раз, недопустимые запросы не изменяют состояние.

Скриншот инструкции