Авторизация менеджера по конкретному атрибуту операции и ресурса - PullRequest
0 голосов
/ 11 октября 2019

В ApiPlatform я пытаюсь добавить некоторые полномочия, подобные этому:

  • Пользователь может редактировать сам , кроме: имени пользователя и ролей.
  • Пользователь сроль: APP_USER_EDIT_USERNAME, может редактировать все пользователь имя пользователя
  • Пользователь с ролью: APP_USER_EDIT_ROLES, может редактировать все пользователь роли
  • Пользователь с ролью: APP_USER_EDIT_PASSWORD, может редактировать все пользователь пароль

Мы не можем использовать Voter, потому что он обеспечиваетрешение на уровне объекта: мы не знаем, какой атрибут изменяется в запросе PUT / PATCH.

Я пытаюсь использовать tge security и security_post_denormalize, но это приводит к непростой для чтения конфигурации,и не разрешается определять конкретное сообщение об ошибке для каждой возможности.

Пользовательский валидатор тоже не может мне помочь, потому что по атрибуту пароля я могу знать фактического пользователя, но не то, какой объект редактируется в данный момент. И определенно не роль валидатора.

Есть ли хороший способ управлять правом для конкретной операции по определенному атрибуту? Сейчас я смотрю на группы динамической сериализации или добавляю конкретную точку входа для: пароля, ролей, операций с именами пользователей PUT / PATCH.

Большое спасибо.

...