Каждый пользователь имеет одну или несколько ролей, каждая роль имеет одно или несколько разрешений. Пока я могу собрать все разрешения, связанные с пользователем через роли.
Эта проблема
Некоторые разрешения имеют некоторые ограничения. Например:
Пользователь может редактировать все сообщения, принадлежащие его сайту, но не другие сообщения.
Поэтому разрешение «редактировать сообщение» должно иметь это ограничение.
Что касается модели: если ограничения связаны с разрешением, я не могу решить, какие ограничения активны для конкретного пользователя.
Модель пользователя может иметь такой атрибут, как «сайт», но не все пользователи, принадлежащие одному сайту, должны иметь указанное выше ограничение. Некоторые из них должны иметь возможность редактировать все сообщения.
Вопрос
Как лучше всего определить, какое ограничение активно для конкретного пользователя. Должен ли я разделить это на отдельные разрешения и интегрировать ограничения в модель разрешений или есть лучшее решение? Я наткнулся на управление доступом на основе атрибутов, но я не уверен, что мне следует переключиться на совершенно другой подход.
Любая помощь приветствуется :)