Мне интересно, знает ли кто-нибудь об элегантном способе достижения этого, используя систему ACL Symfony2.
У меня есть объект Comment
(мой объект домена), который должен быть доступен для редактирования ROLE_USER
, но это разрешено только в течение 5 минут после публикации комментария, иначе комментарий может быть отредактирован только ROLE_ADMIN
.
Сделать это так, чтобы его можно редактировать только с помощью ROLE_USER
и ROLE_ADMIN
просто, просто сделайте RoleSecurityIdentity
для каждого.
Теперь моя проблема возникает, когда я хочу включить фактор времени для ROLE_USER
. Моя первая проблема заключается в том, что ему нужна информация от объекта домена, а не только таблицы ACL, но я думаю, что это разрешимо, создав собственный ObjectIdentity
класс, который также может содержать время, в течение которого был отправлен Comment
.
Теперь для жесткой части
Мне кажется, мне нужно создать пользовательский PermissionGrantingStrategy
, который знает, как посмотреть время создания. Это нужно загружать, когда проверяется тип Comment
, но я не знаю, как его загрузить. Кто-нибудь знает, есть ли какой-то factory, через который можно настроить такую вещь? Итак, если объект имеет конкретный PermissionGrantingStrategy
, связанный с ним, тогда он используется, иначе используется значение по умолчанию?
Я знаю, что это немного длинный, большое спасибо, если кто-то знает, как этого добиться, поскольку документация ACL кажется немного редкой на данный момент. Мое резервное решение состоит в том, чтобы просто сделать какой-то сервис, чтобы проверить, можно ли редактировать комментарий и не беспокоить ACL вообще.