Domain Access Entity

Domain Accessの機能を任意のfieldableエンティティタイプに拡張し、ノード以外にもドメインベースのアクセス制御を可能にします。

domain_entity
1,755 sites
24
drupal.org

概要

Domain Access Entityは、Drupalの任意のfieldableエンティティタイプにDomain Access制御を追加するための強力なソリューションを提供します。コアのDomain Accessモジュールはノードアクセスのみを処理しますが、このモジュールはその機能をタクソノミーターム、Paragraphs、ブロック、メディア、カスタムエンティティを含むすべてのエンティティタイプに拡張します。

このモジュールは選択したエンティティタイプにdomain_accessフィールドを追加し、コンテンツを特定のドメインに制限できるようにします。ドメインが割り当てられていないエンティティはすべてのドメインでアクセス可能なままです。また、URL書き換え用のdomain_sourceフィールドも提供し、エンティティのURLが正規のドメインを指すようにします。

サイト管理者はエンティティタイプごと、バンドルごとにドメインアクセスを設定でき、自動ドメイン割り当て(ユーザーには非表示)またはユーザーが選択可能なドメイン所属のいずれかを選択できます。このモジュールはViewsと統合され、割り当てられたドメインでのコンテンツの作成、編集、削除に対するきめ細かいパーミッションを提供します。

Features

  • 任意のfieldableエンティティタイプ(タクソノミーターム、Paragraphs、ブロック、メディアなど)でDomain Access制御を有効化
  • エンティティバンドルごとに設定可能なドメインアクセス(自動またはユーザー選択可能なドメイン割り当て)
  • クロスドメインでの正規URL書き換え用のDomain Sourceフィールド
  • 現在のドメインでエンティティを自動的にフィルタリングするクエリアクセス条件
  • エンティティバンドルごとの作成/更新/削除操作に対する動的パーミッション生成
  • 既存のエンティティをデフォルトドメインに割り当てるためのバッチ更新サポート
  • Domain Accessモジュールのパーミッションシステムとの統合
  • Domain SourceのURL書き換えに対するルート除外設定
  • ドメインベースのメニューリンクアクセス制御用のサブモジュール

Use Cases

マルチブランドのタクソノミー管理

コードベースを共有する複数のブランドを持つ企業は、各ブランドのドメイン固有のタクソノミータームを作成できます。商品カテゴリ、タグ、その他のタクソノミーは、同じボキャブラリー構造を共有しながらドメイン固有にできます。

ドメイン固有のメディアライブラリ

メディアエンティティを特定のドメインに割り当てることで、共有のDrupalインストールを使用しながら、異なるサイトが別々の画像ライブラリを維持できます。

正規URLを持つクロスドメインコンテンツ

Domain Source機能を使用して、コンテンツは複数のドメインでアクセス可能でありながら、プライマリドメインで正規URLを維持できます。これにより、重複コンテンツの問題を回避してSEOに役立ちます。

マルチテナントのParagraphs

Paragraphsタイプをドメイン制限することで、同じParagraphs設定を共有しながら、異なるサイトが異なるコンポーネントライブラリにアクセスできます。

ドメイン固有のナビゲーション

domain_menu_accessサブモジュールを使用して、メニュー項目を現在のドメインに基づいて表示または非表示にでき、各サイトが独自のナビゲーション構造を持つことができます。

Tips

  • アクセスの問題をトラブルシューティングする際は、モジュールを無効にせずにバイパスアクセス条件設定を一時的に使用してください
  • クロスドメインコンテンツ管理を許可するために、ユーザープロフィールのAffiliate editor optionsでユーザーをドメインに割り当ててください
  • エンティティを移行する際は、ドメイン割り当てを含めないとエンティティにアクセスできなくなります
  • Domain Sourceフィールドは正規URLドメインを決定し、domain_accessはどのドメインがエンティティにアクセスできるかを制御します
  • クロスドメインコンテンツを表示するViewsでは、エディターがドメイン間を切り替えられるようにドメインフィールドフィルターを公開してください

Technical Details

Admin Pages 2
Entities /admin/config/domain/entities

エンティティタイプでドメインアクセスを有効にするためのメイン設定ページ。利用可能なすべてのfieldableエンティティタイプを一覧表示し、それぞれのドメインアクセス制御の有効化/無効化を可能にします。トラブルシューティング用にアクセス条件をバイパスするクイックトグルを提供します。

[エンティティタイプ]でドメインアクセスを有効化 /admin/config/domain/entities/{entity_type_id}

エンティティタイプのバンドル固有の設定ページ。フィールドの動作、デフォルトドメイン値、Domain Source設定を含む各バンドルのドメインアクセス設定を構成します。

権限 5
ユーザーの割り当てドメインに関連付けられたエンティティへのアクセスとフィルタリング

複数のドメインを担当するエディターが異なるドメインのエンティティにアクセスできるようにします。このパーミッションを持つユーザーは、管理ページで割り当てられたすべてのドメインのエンティティを表示できます。

すべてのエンティティのドメインアクセスステータスを設定

エディターがウィジェットの動作設定に関係なく、すべてのエンティティタイプのドメインアクセスを編集・設定できるようにします。

[エンティティタイプ]: [バンドル]: 割り当てドメインで新しいコンテンツを作成

エンティティバンドルごとに生成される動的パーミッション。ユーザーが割り当てられているドメインでこのタイプの新しいエンティティを作成できるようにします。

[エンティティタイプ]: [バンドル]: 割り当てドメインで任意のコンテンツを編集

エンティティバンドルごとに生成される動的パーミッション。ユーザーが割り当てられているドメインでこのタイプのエンティティを編集できるようにします。

[エンティティタイプ]: [バンドル]: 割り当てドメインで任意のコンテンツを削除

エンティティバンドルごとに生成される動的パーミッション。ユーザーが割り当てられているドメインでこのタイプのエンティティを削除できるようにします。

Hooks 2
hook_domain_entity_source_alter

モジュールがエンティティURL書き換え用のDomain Sourceを変更できるようにします。

hook_domain_entity_source_path_alter

モジュールが非エンティティパスにDomain Source処理を追加できるようにします。

Troubleshooting 4
ドメインアクセスを有効にした後にエンティティが表示されない

ドメインアクセスを有効にする前に作成されたエンティティにはドメイン割り当てがなく、アクセスできなくなる可能性があります。ドメインアクセスを有効にする際にバッチ更新機能を使用して、既存のエンティティをデフォルトドメインに割り当ててください。

Viewsがドメインで正しくフィルタリングされない

Viewの詳細設定(クエリ設定)でSQL書き換えを無効にするか、手動でdomain_accessフィールドにフィルターを追加して、どのドメインのエンティティが表示されるかを制御してください。

管理画面でアクセス拒否エラー

ユーザーが「access entities affiliate on assigned domains」パーミッションを持ち、ユーザープロフィールのAffiliate editor optionsで適切なドメインに割り当てられていることを確認してください。

エンティティリンクのURL書き換えが機能しない

エンティティバンドルでdomain_sourceフィールドが有効になっていることを確認し、バンドル設定の除外ルートリストにルートが含まれていないことを確認してください。

Security Notes 3
  • このモジュールは「administer domains」パーミッション保持者のみにアクセスを制限します
  • 動的パーミッションはエンティティバンドルごとに生成されます - 新しいエンティティタイプを追加する際は慎重に確認してください
  • バイパスアクセス条件設定はデバッグ用に一時的にのみ使用し、本番環境では使用しないでください