Используя PHP и Zend_ACL, я хочу создать чрезвычайно гибкую систему разрешений. Я хочу иметь возможность назначать разрешения всем объектам определенного типа, а также экземплярам этих объектов. Если запрашивается конкретный экземпляр объекта и он не существует в дереве ресурсов, можно использовать набор разрешений для «общего» объекта. Моя проблема в том, что это необходимо для гнездования, и я не могу найти способ сделать это без множественного наследования, которое Zend_ACL не поддерживает.Как я должен структурировать свое дерево ресурсов в ACL?
Примером может служить это. Онлайн-учебный сайт с факультетами, курсами и мероприятиями. Каждое событие относится к курсу, и каждый курс для преподавателей. Я хотел бы иметь возможность разрешить каждой роли факультета доступ ко всем курсам (и событиям по наследству), но конкретный преподаватель хочет, чтобы их материал был частным. Поэтому я заставляю структуру моего дерева ресурсов иметь ресурсный узел для каждого факультета и иметь каждый курс, относящийся к этой ветви факультета, от узла факультета вместо того, чтобы разветвляться с общим узлом курса, который дает каждому курсу разрешения по умолчанию. С новой структурой, как я могу применить свои общие разрешения на курс? То же самое касается событий ниже курсов, если я хочу, чтобы каждое событие было доступно только для чтения, если родительский курс доступен для чтения, но я также хочу применить набор разрешений по умолчанию для каждого события, как я могу организовать дерево таким образом, чтобы каждое событие наследовалось от его родителя и его общего узла без множественного наследования?
Любые вопросы, комментарии или предложения для другой системы приветствуются.
Аналогичные ситуации: http://stackoverflow.com/questions/890068/what-should-resources-be-in-an-acl-models-of-objects-or-the-instances-of-the-obj/ – gnarf