2013-06-21 1 views
3

Ситуация: Мое приложение относится к объектам Doctrine, к которым у пользователя может быть или нет доступ. Независимо от того, имеет ли конкретный пользователь доступ к определенному объекту для определенной цели, определяется пользовательским объектом Voter (процесс определения того, имеет ли пользователь доступ довольно сложно).Создание списка объектов доктрины, доступных для конкретного пользователя на основе пользовательского избирателя в Symfony2

Задача: Мне нужно показать Пользователю список сущностей Доктрины, к которым у него есть доступ. Возможно, этот список должен быть разбит на страницы. Из-за сложности решения о том, имеет ли Пользователь доступ к объекту, создание одного запроса DQL/SQL для этого почти невозможно (или, по крайней мере, чрезвычайно сложно).

Вопрос: Есть ли лучший способ построить этот список, чем просто выборка всех лиц из базы данных, зацикливания на них, и прошу security.context ли или нет Entity имеет доступ (при добавлении каждого объекта к какой доступ предоставляется массиву до тех пор, пока я не построил массив с достаточным количеством объектов в нем для заполнения страницы)? Могу ли я каким-то образом учесть избирателя при запросе учения для списка сущностей?

ответ

1

Для этого предназначены ACL.

Прочтите главу книги How to use Access Control Lists (ACLs).

Дополнительную информацию можно найти в this blog post и ссылках внизу статьи.

Теперь, когда вы настроили ACL, вы можете использовать возможные решения от this blog, this question или this question.

Вы можете также взглянуть на ACLHelper в this gist.

+0

Хорошо, я надеялся избежать лишних хлопот по поддержанию ACL, но если это единственный способ, пусть будет так :) Спасибо – Asciiom