Установлен FOSUserBundle.
Стандартные настройки безопасности для маршрутов:
/* app/config/secutiry.yml */
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, roles: ['ROLE_ADMIN'] }
- { path: ^/, role: IS_AUTHENTICATED_REMEMBERED }
Есть маршруты на создание, удаление, редактирование, получение сущности.
Так вот права на получение должны быть у всех пользователей. А у администраторов всё остальное (редактирование, удаление, создание). Все API маршруты у меня начинаются с
site.ru/api
Конечно можно сделать что то вроде:
/* app/config/secutiry.yml */
access_control:
- { path: ^/api/entity/delete$, roles: ['ROLE_ADMIN'] }
- { path: ^/api/entity/create$, roles: ['ROLE_ADMIN'] }
- { path: ^/api/entity/update$, roles: ['ROLE_ADMIN'] }
Но что если этих сущностей много? Порядка 15. Для каждой надо так прописывать? Что то мне подсказывает, что это не самый лучший способ. В контроллере проверять права тоже не правильно, я считаю, это задача роутера.
Может сделать приставку
site.ru/api/admin ?
Получится тогда так:
/* app/config/secutiry.yml */
access_control:
- { path: ^/api/admin/, roles: ['ROLE_ADMIN'] }