Как с помощью Symfony Secure разрешить доступ только к одному id в рест-роуте?
Есть REST-сервис. У него есть роуты /users, /users/{id} и /users/{id}/всечтоугодно.
Мне нужно запретить конкретному авторизованому пользователю доступ ко всем юзерам, кроме его самого и его ресурсам. То есть если у текущего авторизованного пользователя id 123, то ему должны быть доступны только урлы /users/123 и /users/123/всечтоугодно, вто время как ресурсы других пользователей ему не должны быть доступны.
Есть ли способ сделать это через Symfony Secure Bundle или придется каждый раз самому городить эту проверку в контроллерах?
Самое простое - сделать шорткат:
вместо /users/123 и /users/123/всечтоугодно
например /my и /my/всечтоугодно
Проще и с точки зрения DX, и с UX.
Если очень хочется оставить как есть, то надо использовать Voter и городить соответствующую проверку в контроллере. При желании можно эту проверку сбросить на Argument Resolver
galliard, все зависит от того, как ваше API используется. Мне, как пользователю, безразлично какой у меня id, а в вашем случае чтоб работать со своим профилем надо будет делать доп. запрос, чтобы этот id получить