модели (таблицы):RBAC: контроль доступа с помощью нескольких атрибутов
- товара (номер, имя, category_id, status_id)
- Категория (номер, имя)
- Статус (номер, имя)
Мне нужно ограничить доступ к элементам точными категориями и точным статусом.
Ситуация 1.
Role1 должны иметь доступ к элементам с категориями с идентификаторами 1 и 3, но роль2 на товары с категориями с идентификаторами 2 и 4.
Ситуация 2.
роль должна имеют доступ к элементам: с категорией 1, но только те, которые имеют статус 5 или 6 с категорией 2, но только те, которые имеют статус 7 или 8
Категории и статусы могут быть создан и удален.
Как реализовать такой контроль доступа в концепции RBAC?
Для ситуации 1 моя идея состояла в том, чтобы динамически создавать разрешения с именами типа «accessItemWithCategory_ {$ categoryId}» и назначать их соответствующей роли, а также проверять пользователя, может ли он («accessItemWithCategory_ {$ categoryId}»). он работает, но просто не чувствует себя хорошо.
Для ситуации 2, если продолжить такой подход, я получаю разрешения типа "accessItemWithCategory_ {$ categoryId} _Status _ {$ statusId}", и это просто уродливо и крайне негибко.
Если вы не используете идентификаторы в именах разрешений, чем что? я могу использовать простое разрешение «accessItem» с Rule, которое проверяет дополнительную таблицу с параметрами role и Item, которые позволят роли получить доступ к элементу? Но это означает, что управление авторизацией за пределами RBAC и ад сопровождается поддержкой иерархии ролей.
Напишите пользовательские правила для ваших разрешений. – ineersa
@ineersa да, но что я должен делать в пользовательском правиле? – niluzok