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