Допустим, имеются объекты, к которым надо ограничивать доступ, набор ролей (которые могут быть привязаны к конкретному объекту или быть общими), и разрешения доступа пары роль-объект к её объекту.
Приведу пример:
Объекты: блогопост №1, блогопост №2, и т.д.
Роли: аноним, читатель, редактор, модератор. (Читатель, редактор и модератор должны быть привязаны к блогопосту.)
Разрешения для первого блогопоста (не фиксированные, могут быть свои для каждого объекта, плюс нужна возможность менять их):
- Аноним может читать блогопост №1.
- Читатель-бп1 может читать блогопост №1 и оставлять комментарии.
- Редактор-бп1 может читать и редактировать блогопост №1.
- Модератор-бп1 может читать, редактировать блогопост №1, а также редактировать и удалять комментарии.
Разрешения для второго блогопоста:
- Аноним НЕ может читать блогопост №2.
- Читатель-бп2 может читать блогопост №2.
- Редактор-бп2 может читать и редактировать блогопост №2.
- Модератор-бп2 может читать блогопост №2, а также удалять комментарии.
Как такую модель выразить в БД? Есть где-нибудь реализация похожей модели? Как разрешать конфликты (например, пользователь одновременно читатель и редактор блогопоста №1. Может ли он редактировать пост?)?
базы данных