Куда поместить логику проверки данных перед записью?

Здравствуйте!
Есть сущность - товар, у него есть свойство "отображать на сайте".
Есть сущность пользователь, пользователи обладают разными правами (админ, менеджер, модератор, старший менеджер и т.п.)
Товар перед публикацией должен пройти модерацию, и рядовой пользователь/менеджер не может установить видимость в true. А админ/модер могут. Зато любой пользователь, имеющий разрешение на редаткирование, может выключить отображение товара.
И есть 2 типа обновления товара - единичное (в рамках CRUD) и множественное (выбрал чекбоксами несколько товаров и нажал обновить).
Собственно, вопрос: куда принято в Симфони помещать логику подобной проверки (контроллер, валидатор, репозиторий и т.п.)? Заранее благодарю за ответы!
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 2
@sl0
Для модерации/редактирования я бы сделал EditController, в котором по IsGranted были бы установлены ограничения по ролям. И отдельный контроллер для снятия выключения отображения для пользователей.
Но вообще система очень странная. Зачем пользователям давать возможность снимать публикацию с товаров? Любой взбесившийся юзер сможет похерить труд всех модераторов.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Контроль доступа - по возможности выноси в контроллер, с помощью Voters например.
Валидацию данных - рекомендую выполнять в каждом публичном и защищенном методе. Да, это вроде как гемор, но такой подход экономит время коллосально на отладке. Непосредственно в Entity валидация в сеттерах.
https://github.com/index0h/php-conventions
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы