Ваша проблема множественного наследования - все в вашей голове - если, конечно, не может быть на нескольких факультетах - и т. Д. Создайте дополнительный «родительский ресурс», который может изменить ACL из базового «курса».
Вы не хотите, чтобы курс наследовал права факультета напрямую; Вы, вероятно, захотите, чтобы кто-то мог редактировать курсы для этого факультета (ТП или что-то в этом роде), но не сам факультет, верно?
факультетов, курсов и мероприятий. каждый
событие принадлежит курсу, и каждый
курс на факультет
Parent -> middleman -> child
Courses -> Courses:Faculty2 -> Courses:Faculty2:Course1
Events -> Events:Course1 -> Events:Course1:Event3
и т.д.
Это даст вам группы курсов по факультетам, но все еще наследует разрешения курса по умолчанию. Когда вы добавляете каждый ресурс - просто сделайте его родительским для своего группового ресурса, который является родительским для общего ресурса.
Если вы хотите, чтобы все события для определенного курса были скрыты - вы просто устанавливаете разрешение для Event: Course #
Если вы хотите иметь возможность устанавливать разрешение на все события факультета, вы можете просто добавить другого «промежуточного» родителя над Event: Course1, который также группирует события по факультетам: Events:Faculty2:Course1:Event3
Я обнаружил, что для системы разрешений 9 раз из 10 вам не нужно (или не нужно путаница) множественное наследование. Если ваш контроль доступа более сложен, чем простое дерево, вам следует пересмотреть свой контроль доступа.