web-dev-qa-db-ja.com

一部のコンテンツへのアクセスを認証されたユーザーまたは特定の役割に制限する最も簡単で最も愚かな方法は何ですか?

スタッフが出版物を入力するために使用する出版物データベースを作成しています。これらの出版物の一部は一般に公開されており、一部は公開されていません。さらに、出版物にはそれらに関連付けられたファイルがあり、公開されているものとされていないものがあります。ブール型の公開フィールドと、2つの個別のファイルフィールド(1つは公開用、もう1つは内部ファイル用)を使用して、さまざまなタイプのパブリケーション用のコンテンツタイプがいくつかあります。現在、ユーザーの役割は1つ(スタッフメンバー)ですが、管理者とコンテンツ承認ワークフローを考慮して、役割の数はわずかに増える可能性があります。

  • コンテンツタイプa
    • 公衆?
    • 公開ファイル
    • 内部ファイル
  • コンテンツタイプb
    • 公衆?
    • 公開ファイル
    • 内部ファイル

すべてのパブリケーションリストは、認証されていないユーザーには公開ドキュメントのリストを表示し、適切な役割の認証されたユーザーにはすべてのドキュメントのリストを表示するという考え方です。

私の最初の考えは、ページごとに異なるアクセス設定で2つの異なるビューを作成することです。 1つ目は、publicフィールドをチェックせず、非公開ファイルフィールドを含むページです。2つ目は、誰でも利用できる、publicフィールドがtrueに設定され、内部ファイルを含まないパブリケーションにフィルターをかけるページです。フィールド、およびスタッフのみが関心を持つ他のいくつかのフィールド。

  • ノードリストビュー
    • 表示する
      • アクセス:スタッフのみ
      • フィルター:公開されたノード
  • ノードリストビュー
    • 表示b
      • アクセス:制限なし
      • フィルター:公開されたノードかつパブリック
  • ノードビュー
    • 表示する
      • アクセス:スタッフのみ
      • フィルター:公開ノード
      • fields:内部ファイルを含むすべてのフィールド
    • 表示b
      • アクセス:制限なし
      • フィルター:公開済みNode AND ANDマーク済み
      • fields:内部ファイルを表示しない、他のいくつかのフィールド

これは最も単純で最も愚かなアプローチですか?ビューまたはビューモード(フルコンテンツ、ティーザーなど)を介して使用されるフィールドを制御する方が理にかなっていますか。私はまだDrupalでの作業にまだ慣れていないので、毎回それと戦っています。 drupalサイトで作業するための間違った方法を考えているに違いない。

詳細情報:私は実際にこれを既存のシステムから再実装しており、 Migrate モジュールを使用して何千ものエントリなので、移行の一部として何らかの方法で、アクセス許可を指定する必要があります。

3
UltraBob

コンテンツアクセス

このモジュールを使用すると、ロールおよび作成者ごとにコンテンツタイプの権限を管理できます。これにより、各コンテンツタイプのカスタム表示、編集、および削除権限を指定できます。オプションで、コンテンツごとのアクセス設定を有効にして、コンテンツノードごとにアクセスをカスタマイズできます。

ビデオチュートリアル

フィールド権限

フィールド権限モジュールを使用すると、サイト管理者はフィールドレベルの権限を設定して、エンティティのフィールドを編集、表示、作成できます。

enter image description here


必要なものがすべてビュー内にあると仮定すると、ビューのアプローチは問題ありません。

ただし、ノードへのアクセスを制限する場合は、コンテンツアクセスを使用することをお勧めします。

例:ビューに匿名でアクセスできないリンク(例:プレミアムコンテンツ)がリストされている場合は、コンテンツアクセスモジュールを使用することをお勧めします。ノード。

2
No Sssweat

前の(有効な!)回答とは別に、質問の少なくともこの部分に対処する別の代替があると思います。

すべてのパブリケーションリストは、認証されていないユーザーには公開ドキュメントのリストを表示し、適切な役割の認証されたユーザーにはすべてのドキュメントのリストを表示するという考え方です。

これを実装しようとする方法は、認証されたユーザーを対象とするすべてのドキュメントに対して Group モジュールを使用することです。 「公開」ドキュメントの場合、私は何もする必要がないと思います。 「right role」に従って、それは適切な「グループ」を作成することの問題です(たとえば役割ごとに1つありますか?)、および/またはこのモジュールがサポートするサブグループです。

このモジュールは Organic groups "弟"のようなもので、D7から始まり、地平線にD8バージョンが入っています。個人的には、ますます Content Access モジュールの潜在的な代替手段として考えています。また、すべてエンティティベースであるため、 Rules モジュールと組み合わせて使用​​する方法はたくさんあります。

このモジュールの詳細については、「 ユーザーが自分のユーザーのみを編集できるようにする方法 」に対する私の回答を参照してください。

0
Pierre.Vriens