Пожалуйста, не стесняйтесь комментировать и делиться любыми отзывами, чтобы помочь мне найти решение.Спасибо!
Это таблица авторизации, определяющая область действия каждого пользователя.В настоящее время я не знаю , как обрабатывать данные на уровне product
и обрабатывать различные роли.Я считаю, что моя схема базы данных неправильно настроена .
C
Создать, R
Читать, U
Обновить, D
Удалить
У меня есть следующая структура базы данных с postgresql 9
1) user
таблица has_many
записи внутри stores
таблица.
-----------------------------
| id | org_tag | email |
|---------------------------|
| 1 | a | a@em.com |
|---------------------------|
| 2 | b | b@em.com |
|---------------------------|
| 3 | c | c@em.com |
-----------------------------
2) stores
таблица включает в себя jsonb
столбец employees
, user_id
и tags
столбец массива
Владелец store
может добавить employees
в магазин, который будет иметь специальные authorization
гранты в зависимости от role
.
Я фильтрую хранилище на основе массива tags
для scope
данных и обрабатываю авторизацию.
----------------------------------------------
| id | user_id | employees | tags |
|---------------------------------------------|
| 1 | 1 | see json1 | ['a', 'b'] |
|---------------------------------------------|
| 1 | 1 | see json2 | ['a', 'c'] |
-----------------------------------------------
Значение json1
равно
[{'email':'a@em.com','role':'owner'},{'email':'b@em.com','role':'trial_editor'}]
tags
соответствует user.org_tag
Значение json2
равно
[{'email':'a@em.com','role':'owner'},{'email':'c@em.com','role':'manager'}]
3) products
стол
Банка trial product editor
редактировать только тот продукт, которому он был назначен.Я могу определить product
s на tags
, но я не знаю, как обрабатывать различные roles
Например. Store Manager может создавать продукты, а Trial Product Editor
может только читать и обновлять.
--------------------------------
| id | user_id | tags |
|------------------------------|
| 1 | 1 | ['a', 'b'] |
|------------------------------|
| 1 | 1 | ['a', 'c'] |
--------------------------------