Система имеет вложенные ресурсы. Например
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?
Прежде всего. Я думаю, что ваш вопрос не имеет ничего общего с 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
После прояснения вам также нужно будет объявить разрешения для каждого пользователя в ферме. Но это будет объявлено в отношении «многие ко многим» с двумя свойствами отношения (чтение, запись).
После того, как все хорошо спроектировано, вы сможете создавать запросы, которые удовлетворяют вашим потребностям.
Я знаю, что это трудно понять, потому что я говорю абстрактно, но дайте мне знать, если вы не понимаете, и я нарисую вам схему.
Других решений пока нет …