Я работаю над веб-сайтом, где каждый пользователь может иметь несколько ролей / разрешений, таких как базовый вход в систему, заказ продуктов, администрирование других пользователей и так далее. Помимо этого, есть магазины, и каждый магазин может иметь несколько пользователей, управляющих им. Каждый магазин также имеет собственный набор разрешений.
Я запутался и не уверен, как лучше представить это в БД. Прямо сейчас я думаю:
Пользователи
роли
users_roles
магазины
stores_users
Но нужно ли мне иметь таблицы store_roles и stores_users_roles для отслеживания отдельных разрешений для хранилищ или я должен ограничивать роли одной таблицей «ролей»?
Изначально я думал о том, чтобы иметь только одну таблицу ролей, но как насчет пользователей, которые имеют роли в нескольких магазинах? То есть, если пользователю дается роль, скажем, «обновления продукта магазина», должен быть какой-то метод определения того, к какому магазину это относится. Таблица store_users_roles могла бы исправить это, имея поле store_id, таким образом, пользователь мог иметь «обновление магазина» и «удаление продукта магазина» для магазина № 42 и только «обновление продукта магазина» для магазина № 84.
Я надеюсь, что здесь есть смысл.
Редактировать
Спасибо за информацию всем. Видимо, у меня есть некоторые мысли, чтобы сделать. Это просто забавный проект, над которым я работаю, но RBAC всегда был тем, что я хотел понять лучше.