私は次のテーブル構造を持っています:
Entity
---------------------
id | name
Users
---------------------
id | name | password
UserGroups
---------------------
id | parent_id | name
Users_UserGroups
---------------------
user_id | user_group_id
Roles
---------------------
id | parent_id | name
Users_Roles
--------------------
user_id | role_id
また、主な目的はEntity
、次の条件で行レベルのアクセス制限を作成することです。
1)ユーザーが作成しますEntity
-彼はそれを見ることができます(彼は所有者です)
2)ユーザーグループのメンバーもそれを見ることができます(しかし、他に定義されている場合-見えない-それはユーザープライベートになります)。したがって、レコードはユーザーまたはグループのプライベート、またはパブリックにすることができます。すべてのユーザーがレコードを表示できます。たとえば、ユーザーは営業チームAに属し、すべてのグループメンバーを表示できるレコードがありますが、ユーザー(潜在的なクライアント)のみを表示できるレコードが1つ以上存在する場合があります。
3)たとえば、ユーザーAが役割を担っsalesman
ており、この役割は親役割の子ですsales managers
。次に、sales manager
ロールであるユーザーはユーザーAエンティティを表示できます。役割の階層構造。上司は彼の直接の従業員が何をしているのかを見ることができます:
)4)profile
プロファイルを役割に追加し、必要に応じてユーザーにも追加できるテーブルもあります。
主な質問は、ユーザー/グループ/役割/プロファイルをエンティティに関連付ける方法ですか?そして、権限を定義する方法は?私のアイデアは、列'user_id'をに作成することでしたEntity
。レコードを照会するときEntity
は、ユーザーを検索し、どの役割、グループ、プロファイルがユーザーであるかなどを確認します。しかし、それは複雑すぎると思います。多くの追加のテーブルがなくても、はるかに簡単な方法があるかもしれません。アドバイスをいただければ幸いです:)