ユーザーの役割に基づいて特定のノードのみの表示を許可するにはどうすればよいですか?
基本的に、特定の役割のユーザーがノードにアクセスできるようにしたくありません。
ユーザーの役割に基づいて特定のノードのみの表示を許可するにはどうすればよいですか?
基本的に、特定の役割のユーザーがノードにアクセスできるようにしたくありません。
回答:
コンテンツアクセスモジュールを試しましたか
このモジュールを使用すると、ロールおよび作成者ごとにコンテンツタイプの権限を管理できます。これにより、各コンテンツタイプのカスタムビューを指定し、編集および削除することができます。オプションで、コンテンツごとのアクセス設定を有効にして、コンテンツノードごとにアクセスをカスタマイズできます。
あなたが話しているのは、大きな主題であるDrupalノードのアクセス制御です。
ノードアクセス制御に対するコアの組み込みサポートはかなり粗く、役割によってノードを表示するためのアクセスを制御するには、ある種のノードアクセス制御モジュールを使用する必要があります。
Drupal.orgには、すべてのノードアクセスモジュールを一覧表示するページがあり、それぞれのカプセルレビューが記載されています。そのページを見て、役割に基づいてアクセスを制御するための適切なモジュールを見つけることができるかどうかを確認することをお勧めします。
アクセス制御を使用する場合、Drupalアクセス制御モジュールが実際にどのように機能するかを理解するのに役立ちます。ここで簡単に説明します。
ノードの管理権限を付与されたユーザーがノードのアクセス制御によって制限されることはありません。公開されたコンテンツを表示する権限がないユーザーは、ノードアクセスモジュールによってアクセスを許可されることはありません。「ノードの管理」ではなく「コンテンツへのアクセス」を持つユーザーのみが、ノードアクセスモジュール制御のワイルドワールドを利用できます。
Drupalのノードアクセス制御は、原則として追加されます。つまり、「Drupalの哲学」に従ってアクセス制御を行うモジュールは、アクセスを許可するだけで、拒否するべきではありません。ノードへのアクセスを微調整したい管理者は、まず誰もアクセスできないことを確認してから、アクセスを許可するすべての人にアクセス許可を追加する必要があります。
つまり、すべてのユーザーのアクセスを拒否することから始めて、制限したくないノードに再度追加する必要があるため、コンテンツアクセスのようなモジュールで個人へのアクセスを制限するのはかなり面倒な場合があります。ただし、実際にノードごとに実行する必要がある場合は、これが最良のオプションだと思います。その主な解決策はコンテンツタイプですが、単一ノードに対してこれをオーバーライドできます。
残念ながら、アクセスの拒否はコンテンツタイプでのみ機能し、個々のノードを上書きしないため、アクセスを拒否することはできません。
注意:複数のノードアクセスモジュールを使用することはお勧めしません。
コンテンツタイプをノードアクセス制御の基本単位として使用できるように要件を変更できる場合は、アクセスの拒否が理想的です。たとえば、「学生」の役割があり、回答のあるノードへのアクセスを拒否する場合は、コンテンツタイプ「回答」(デフォルトの「記事」のクローンにすることができます)を作成し、アクセスを拒否することができます。 「Answer」タイプのすべてのノードが「student」の役割によって表示されないように保護してください。