OpenERP には、ユーザー グループに割り当てることができる 2 種類のセキュリティ制限があります。
- アクセス権は CRUD の yes/no フラグ (Unix FS パーミッションと同様) であり、モデルごとのアクセス制御を許可します。このグループのメンバーが、特定のドキュメント モデル (プロジェクト タスクなど) のドキュメントに対して作成、読み取り、更新、および削除操作を実行できるかどうかを示します。デフォルトのポリシーは DENY であるため、デフォルトでは、ユーザーがグループのアクセス権の 1 つを介して操作を実行する権限を明示的に持っていない場合、操作は拒否されます。
- レコード ルールは、CRUD 操作に適用されるフィルターであり、アクセス権が付与されると、ドキュメントごとのアクセス制御が可能になります。ドキュメントが少なくとも 1 つのレコード ルールに一致する場合、ユーザーは特定のドキュメントに対してのみ操作を実行できます。デフォルトのポリシーは ALLOW であるため、特定のモデルにルールが存在しない場合、必要なアクセス権を持つユーザーはそのモデルのすべてのドキュメントにアクセスできます。
アクセス権とレコード ルールの両方を、特定のグループに割り当てることなくグローバルに定義することもできます。その場合、それらはすべての人に適用されます。レコード ルールには 1 つの落とし穴があります。グローバル ルールは他のルールによって (意図的に) 緩和されない可能性があるため、注意して使用してください。
あなたの場合、Project User グループに追加のレコード ルールを 1 つ定義して、プロジェクト タスクへのアクセスを自分のタスク (おそらくまだ割り当てられていないタスク) に明示的に制限する必要があるようです。次のパラメータを使用して、[セキュリティ ルール] メニューに新しいエントリを作成する必要があります。
- オブジェクト/モデル:
project.task
- ドメイン:
['|',('user_id','=',False),('user_id','=',user.id)]
- (意味: 自分のタスクと割り当てられていないタスク)
- 読み取りを申し込む:
[x]
- 書き込みを申し込む:
[x]
- 作成を申し込む:
[x]
- 削除申請:
[x]
- グループ:
Project / User
レコード ルールのドメインは、操作を実行しようとしているレコードで評価される標準の OpenERP ドメインであり、現在のユーザーのデータを含むユーザー変数 (技術的には、現在のユーザーのbrowse_record )を参照できます。 . domainの完全な説明については、ORM メソッドのリストでsearch()を探してください。
特別なユーザー (プロジェクト マネージャーなど) にシステム内のすべてのタスクの表示を許可する場合は、すべてのタスクへのアクセスを許可する別のルールをプロジェクト マネージャー グループに追加することで、このルールを緩和できます。「すべて許可」を意味する特別な「ドメイン フィルター」があり、別のより厳しいルール[(1,'=',1)]を緩和するのに役立ちます。
注: 既存のレコード ルールを見て、最初に何を行っているかを確認し、自分のレコード ルールを追加するときは、レコード ルール フォームの説明を必ずお読みください。また、アクセス権とレコード ルールに何か問題があった場合、これらのセキュリティ制限は管理者には適用されないため( Unixのrootユーザーと同様)、いつでも管理者アカウントの混乱を修正できることを覚えておいてください。