В основном я пытаюсь понять, как правильно реализовать модель БД с разрешениями на основе ролей.Я ищу очень конкретные примеры моделей БД .
. То, как я это вижу сейчас, на бумаге все выглядит просто, у вас есть «Пользователь - Роли - Разрешения»:
users - id
roles - id
permissions - id
user_role - user_id, role_id
role_permission - role_id, permission_id
Проблема для меня начинается, когда вы добавляете ресурсы в смесь.
Допустим, у меня будет два ресурса (может быть что угодно - бизнес, местоположение, отдел ...):
resource1 - id
resource2 - id
Мне нужно как-то их интегрировать, моя попытка выглядит примерно так:
permissions - id, resource_id
resources - id
Кажется разумным - разрешение для конкретного ресурса.
Нокак назначить конкретный экземпляр ресурса для конкретной роли / разрешения.Например, «user1» имеет роль «role1» для «Department 1», но не для «Department 2».
Опция 1: кажется слишком свободной, у меня могут быть роли с разрешениями для resource2, назначенными для resource1, что не имеет смысла,А как насчет смешанных ролей - у роли есть права для resource1 и resource2.
role_resources - role_id, resource1_id, resource2_id
Вариант 2: еще больше разделить таблицы?
resource1_permissions - id
resource2_permissions - id
resource1_roles - id
resource2_roles - id
...
Похоже на перебор.
С нетерпением ждем умных идей для этого.