2016-10-17 5 views
2

Я немного почесываю голову о лучшем способе определения ACL на своих моделях. У меня есть дерево модели:
Project -> Issue -> Objective -> Action -> Planning
Каждый проект управляется несколькими пользователями (некоторые из них имеют доступ только для чтения, другие имеют полный доступ). Если пользователь не связан с проектом, он не может получить к нему доступ. Каждый ребенок знает только своего родителя (parentId).Как правильно определить контроль доступа на дочернем объекте n-уровня в Loopback?

Как я могу проверить, что пользователь X может получить доступ к планированию Y?

Я протестировал вложенные модели, и он работает нормально, но только на первом уровне (Project -> Issue). Я уже пробовал ролик-резольвер, где я передаю все исходные модели Project, но он уродлив и должен быть выполнен для каждой модели. Один сказал мне добавить свойство projectId для всех детей, но это явно не чисто.

Большое спасибо за вашу помощь,
Тьерри

ответ

0

Чистейшая способ определенно определить belongsToProject соотношение для каждого суб-объекта (Issue, цель, действие, планирование).

Таким образом, вы можете использовать всю систему управления доступом из loopback и использовать динамические роли.

Вы также можете реализовать решение роли без него, но, как вы сказали, оно должно повторяться для каждой модели, и в конечном итоге оно просто записывает больше кода и делает больше запросов для выполнения той же самой вещи, кроме отношения.