В ApiPlatform я пытаюсь добавить некоторые полномочия, подобные этому:
- Пользователь может редактировать сам , кроме: имени пользователя и ролей.
- Пользователь сроль: APP_USER_EDIT_USERNAME, может редактировать все пользователь имя пользователя
- Пользователь с ролью: APP_USER_EDIT_ROLES, может редактировать все пользователь роли
- Пользователь с ролью: APP_USER_EDIT_PASSWORD, может редактировать все пользователь пароль
Мы не можем использовать Voter, потому что он обеспечиваетрешение на уровне объекта: мы не знаем, какой атрибут изменяется в запросе PUT / PATCH.
Я пытаюсь использовать tge security и security_post_denormalize, но это приводит к непростой для чтения конфигурации,и не разрешается определять конкретное сообщение об ошибке для каждой возможности.
Пользовательский валидатор тоже не может мне помочь, потому что по атрибуту пароля я могу знать фактического пользователя, но не то, какой объект редактируется в данный момент. И определенно не роль валидатора.
Есть ли хороший способ управлять правом для конкретной операции по определенному атрибуту? Сейчас я смотрю на группы динамической сериализации или добавляю конкретную точку входа для: пароля, ролей, операций с именами пользователей PUT / PATCH.
Большое спасибо.