Поддержка вложенной авторизации в Symfony2

Система имеет вложенные ресурсы. Например

Farm HasMany Sectors

Пример отношения объекта будет как ниже

farm1 => [sector1]
farm2 => [sector2, sector3]

Сейчас скажи, user1 прочитал, разрешение на запись на farm1,

user1 Has(read,write) on farm1

Мне нужна система, чтобы автоматически использовать доступ ко всем вложенным ресурсам farm1, в этом случае sector1,

Другими словами, что-то вроде user1.hasWritePermisson(sector1) должен вернуть true, хотя ACL на самом деле хранится с farm1, Мне это нужно даже для работы на вложенных ресурсах сектора и так далее.

Простым решением, вероятно, будет копирование доступа ко всем дочерним объектам farm1 при обновлении его acl. Но я считаю, что это будет действительно неэффективно, если farm1 содержит тысячи секторов.

Что было бы лучшим способом достичь этого в Symfony2?

1

Решение

Прежде всего. Я думаю, что ваш вопрос не имеет ничего общего с SF2. На мой взгляд, вы должны создать эффективную базу данных, которая поможет вам выполнить задачу. Остальные только несколько запросов.

Как я понимаю, это будут 3 основных объекта: User, Farm а также Sector,

User could be in many Farms and Farms could be seen/wrote by many users

A Farm has many sectors, but a sector can only be in one farm

После прояснения вам также нужно будет объявить разрешения для каждого пользователя в ферме. Но это будет объявлено в отношении «многие ко многим» с двумя свойствами отношения (чтение, запись).

После того, как все хорошо спроектировано, вы сможете создавать запросы, которые удовлетворяют вашим потребностям.

Я знаю, что это трудно понять, потому что я говорю абстрактно, но дайте мне знать, если вы не понимаете, и я нарисую вам схему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector