Используя PHP и Zend_ACL, я хочу создать чрезвычайно гибкую систему разрешений. Я хочу иметь возможность назначать разрешения всем объектам определенного типа, а также экземплярам этих объектов. Если запрашивается конкретный экземпляр объекта, а он не существует в дереве ресурсов, то можно использовать набор разрешений для «универсального» объекта. Моя проблема в том, что это должно быть вложено, и я не могу найти способ сделать это без множественного наследования, которое Zend_ACL не поддерживает.
Примером может быть это. Сайт онлайн-обучения с факультетами, курсами и мероприятиями. Каждое мероприятие принадлежит курсу, а каждый курс - факультету. Я хотел бы иметь возможность разрешить каждой роли факультета доступ ко всем курсам (и событиям по наследству), но конкретный факультет хочет, чтобы их материалы оставались конфиденциальными. Поэтому я делаю структуру своего дерева ресурсов с узлом ресурсов для каждого факультета и делаю каждый курс, принадлежащий этой ветви факультета, из узла факультета, а не от общего узла курса, который дает каждому курсу разрешения по умолчанию. Как с новой структурой я могу применить свои общие разрешения на курс? То же самое касается событий под курсами, если я хочу, чтобы каждое событие было доступно для чтения, только если родительский курс доступен для чтения, но я также хочу применить набор разрешений по умолчанию к каждому событию, как я могу организовать дерево так, чтобы каждое событие наследовало от своего родителя и универсального узла без множественного наследования?
Любые вопросы, комментарии или предложения по другой системе приветствуются.