インストール
composer require 'drupal/legal:^3.0'
概要
Legal モジュールは、Drupal サイト向けの包括的な利用規約管理システムを提供します。ユーザー登録フォームにカスタマイズ可能な利用規約テキストを表示し、訪問者が登録を完了する前に同意することを要求します。
新しいバージョンの利用規約が作成されると、すべてのユーザーは次回ログイン時に新しいバージョンへの同意を求められます。このモジュールは、スクロールボックス、HTMLテキスト、オプションのモーダルダイアログ付きページリンクなど、複数の表示形式をサポートしています。
このモジュールは完全な多言語サポートを提供し、各言語ごとに異なる利用規約バージョンを設定できます。また、利用規約の履歴とユーザーの同意記録を表示するための2つのビルトインビューを含む Views 統合も提供します。さらに、Drupal 7 からアップグレードするサイト向けのマイグレーションサポートも備えています。
このモジュールは2つのカスタムコンテンツエンティティを作成します:1つは利用規約の内容を保存するため、もう1つはユーザーの同意記録を追跡するためです。管理者は利用規約フォームに最大10個の追加必須チェックボックスを追加でき、年齢確認やその他のカスタム同意事項に便利です。
Features
- ユーザー登録フォームに必須の同意付きで利用規約を表示
- 新しい利用規約バージョンが公開された際に再同意を要求
- 複数の表示スタイル:スクロールボックス(HTML)、スクロールボックス(CSS)、HTMLテキスト、ページリンク
- ページリンクスタイル用のオプションのモーダルダイアログ表示
- 言語ごとに個別の利用規約バージョンを持つ多言語サポート
- ユーザーが同意する必要がある最大10個の追加カスタムチェックボックス
- 利用規約履歴用のバージョンおよびリビジョン追跡システム
- 前回のバージョンからの変更点を強調する変更説明機能
- 利用規約履歴とユーザー同意追跡用のビルトインビュー
- 特定のユーザーロール用の免除システム
- すべてのログイン時に利用規約への同意を要求するオプション
- 利用規約を表示・同意するためのユーザープロフィール統合
- 利用規約コンテンツを埋め込むための Token サポート
- Drupal 7 からのマイグレーションサポート
- ログイン同意フロー用のセキュアな Cookie ベース認証
Use Cases
ユーザー登録用の基本的な利用規約
ユーザーが登録時に同意する必要がある利用規約を設定します。/admin/config/people/legal に移動し、利用規約テキストを入力し、「HTMLテキスト」表示スタイルを選択して保存します。すべての新規ユーザーは登録を完了する前にこれらの条件に同意する必要があります。
年齢確認付き GDPR コンプライアンス
追加チェックボックスを使用して GDPR 同意と年齢確認を追加します。「追加チェックボックス」セクションで、「私は18歳以上です」や「プライバシーポリシーに記載されている個人データの処理に同意します」などのラベルを追加します。ユーザーは登録するためにすべてのボックスにチェックを入れる必要があります。
多言語サイトの利用規約管理
多言語サイトでは、各言語で利用規約バージョンを作成します。新しい利用規約を保存する前にターゲット言語を選択します。その言語のユーザーにのみ再同意を求める場合は「言語固有のユーザー(リビジョン)」を使用し、全員に再同意を求める場合は「すべてのユーザー(新バージョン)」を使用します。
すべてのログイン時に再同意を強制
高いコンプライアンスが求められる環境では、設定で「すべてのログイン時に利用規約への同意を求める」を有効にします。これにより、ユーザーはサイトにアクセスするたびに同意を確認することになり、金融や医療アプリケーションに便利です。
スタッフを利用規約要件から免除
管理者ロールを持つスタッフメンバーは通常、利用規約に同意する必要がありません。設定で「免除するユーザーロール」の下にあるロール(「管理者」や「編集者」など)をチェックして、これらのユーザーに対する利用規約表示をスキップします。
Drupal 7 からのマイグレーション
Drupal 7 からアップグレードする際、モジュールのマイグレーションプラグインが既存の利用規約コンテンツとユーザー同意記録を自動的に転送します。Drupal のマイグレーションツールを使用して d7_legal_conditions、d7_legal_accepted、d7_legal_settings マイグレーションを実行します。
利用規約同意履歴の追跡
/admin/config/people/legal/users にアクセスして、どのユーザーがどの利用規約バージョンに同意したかを確認し、コンプライアンスを監視します。利用規約履歴タブを使用して、公開されたすべてのバージョンと加えられた変更を確認します。
Tips
- 利用規約テキストはほとんどの HTML を許可する filter_xss_admin() でフィルタリングされるため、管理者または高度に信頼されたユーザーのみが入力すべきです
- 管理フォームのプレビューボタンを使用して、保存前にユーザーに利用規約がどのように表示されるかを正確に確認してください
- 「変更点の説明」フィールドの各行は個別の箇条書きになるため、複数の変更を簡単にリストできます
- /legal ページは登録/ログインフォームの表示スタイル設定に関係なく、常に HTML テキストとして利用規約を表示します
- Conditions エンティティを使用してプログラム的に利用規約を挿入できます - コード例については README を参照してください
- ウェルカムメールに現在の利用規約を含めるために、メールテンプレートで [legal:tc] トークンの使用を検討してください
Technical Details
Admin Pages 5
/admin/config/people/legal
利用規約コンテンツの作成と管理を行うメイン管理ページ。現在の利用規約バージョン情報を表示し、新しい利用規約テキストを入力するためのフォームを提供します。
/admin/config/people/legal/settings
サイト全体で利用規約がどのように表示され、適用されるかの一般設定を構成します。
/admin/config/people/legal/languages
有効な各言語の最新の利用規約バージョンを表示します。このページは Language モジュールが有効な場合にのみアクセスできます。
/admin/config/people/legal/terms_history
作成されたすべての利用規約バージョンの完全な履歴を表示します。legal_terms ビューによって提供されます。
/admin/config/people/legal/users
どのユーザーが利用規約に同意したか、どのバージョンに同意したかを表示します。legal_users ビューによって提供されます。
権限 2
Hooks 9
hook_user_login
ユーザーログインをインターセプトして、ユーザーが最新の利用規約バージョンに同意しているかをチェックします。同意していない場合、ユーザーをログアウトさせ、利用規約同意ページにリダイレクトします。
hook_user_insert
新しいユーザーが登録時に利用規約に同意した際に、同意記録を記録します。
hook_user_update
既存のユーザーがプロフィールページから新しい利用規約に同意した際に、同意記録を記録します。
hook_form_FORM_ID_alter (user_register_form)
ユーザー登録フォームを変更して、利用規約表示フィールドと同意チェックボックスを追加します。
hook_form_FORM_ID_alter (user_form)
ユーザープロフィール編集フォームを変更して、現在の利用規約同意状況を表示し、再同意を可能にします。
hook_theme
管理フォームで利用規約メタデータを表示するための legal_current_metadata テーマフックを定義します。
hook_token_info
利用規約コンテンツを埋め込むための [legal:tc] トークンを定義します。
hook_tokens
[legal:tc] トークンの置換値を提供します。
hook_help
モジュールのヘルプテキストを提供します。
Troubleshooting 6
/admin/config/people/legal で利用規約テキストが入力されていることを確認してください。テキストが保存されるまで利用規約は表示されません。また、登録しようとしているユーザーが免除されたロールを持っていないことも確認してください。
すべてのユーザーに再同意を求める場合は、「すべてのユーザー(新バージョン)」を選択して新しい利用規約を保存したことを確認してください。また、利用規約が変更されたときだけプロンプトを表示したい場合は、「すべてのログイン時に同意を求める」が無効になっていることを確認してください。
このモジュールはログイン同意フローに Cookie「Drupal.visitor.legal_hash」と「Drupal.visitor.legal_id」を使用します。Varnish 設定または GDPR/Cookie 同意ソリューションでこれらの Cookie をホワイトリストに登録してください。
言語管理タブは Locale モジュールが有効な場合にのみ表示されます。多言語の利用規約サポートが必要な場合は有効にしてください。
ユーザー1は設計上、常に利用規約要件から免除されます。これにより、スーパー管理者がロックアウトされることを防ぎます。別のユーザーアカウントで利用規約をテストしてください。
JavaScript が有効になっていること、ページに JavaScript エラーがないことを確認してください。モーダルが機能するには Drupal のコア AJAX ライブラリが必要です。
Security Notes 5
- 利用規約テキストは寛容な XSS フィルターである filter_xss_admin() を使用しています - 信頼できる管理者のみが利用規約コンテンツを編集できるようにしてください
- ログイン同意フローは改ざんを防ぐためにユーザーパスワードとログインタイムスタンプを使用した暗号化ハッシュ(Crypt::hmacBase64)を使用します
- 同意ページの URL トークンはセキュリティのため1時間後に有効期限が切れます
- ログイン同意フロー中は Cookie ベースの認証トークンが使用されます - これらはキャッシングソリューションでホワイトリストに登録すべきですが、信頼できない第三者に公開すべきではありません
- ユーザー1はロックアウトシナリオを防ぐために常に利用規約から免除されます - ユーザー1の認証情報が安全であることを確認してください