Login with Email or Username
標準のログインフォーム上の同一入力欄から、ユーザー名またはメールアドレスのどちらでもログインできるようにします。
login_emailusername
インストール
composer require 'drupal/login_emailusername:^3.0'
composer require 'drupal/login_emailusername:^2.1'
概要
Login Email or Usernameは、ユーザー名またはメールアドレスのどちらでも単一の入力フィールドで認証できるようにすることで、ユーザーのログイン体験を向上させるシンプルかつ実用的なDrupalモジュールです。これにより、ユーザーは登録時にどちらの識別子を使用したかを覚えておく必要がなくなります。
このモジュールは標準のDrupalログインフォームを変更し、「ユーザー名」フィールドをユーザー名とメールアドレスの両方を受け付けるように変更することで、透過的に動作します。メールアドレスが入力されると、モジュールは対応するユーザー名を検索し、それを認証に使用します。両方が一致する可能性がある場合、メールアドレスがユーザー名より優先されます。
さらに、このモジュールはREST API認証エンドポイントを拡張し、ヘッドレスまたはデカップルドDrupalアプリケーションでもメールベースのログインを利用できるようにします。標準のログインエンドポイントとパスワードリセットエンドポイントの両方がメールアドレスを受け付けるように拡張されます。
Features
- 標準のDrupalログインフォーム上の単一入力フィールドでユーザー名またはメールアドレスでログイン可能
- メールアドレスが入力された場合のユーザー名自動検索
- バリデーション時にメールアドレスがユーザー名より優先
- user.login.httpエンドポイントを介したメールベース認証のREST APIサポート
- user.pass.httpエンドポイントを介したメールまたはユーザー名によるパスワードリセットのREST APIサポート
- 設定不要 - インストール後すぐに動作
- Drupal 10.3以降およびDrupal 11に対応
Use Cases
メールベースのログインを使用する標準サイト
ユーザーがユーザー名よりもメールアドレスを覚えている可能性が高いサイトでは、このモジュールがシームレスなログイン体験を提供します。ユーザーはログインフォームにメールアドレスを入力するだけで、ユーザー名を調べたり覚えたりする必要なく、通常どおり認証できます。
デカップルド/ヘッドレスDrupalアプリケーション
別のフロントエンド(React、Vue、Angularなど)を持つヘッドレスDrupalアプリケーションを構築する場合、このモジュールによりREST APIログインエンドポイントがメールアドレスを受け付けるようになります。フロントエンドアプリケーションは、ユーザー名を要求する代わりにメールアドレスでログインリクエストを送信できます。
他のプラットフォームからの移行
メールベースの認証を使用するプラットフォーム(WordPressやカスタムアプリケーションなど)からユーザーを移行する場合、このモジュールにより、Drupalが内部的にユーザー名ベースのアカウントを維持しながら、ユーザーは引き続きメールアドレスでログインできます。
自動生成されたユーザー名を使用するサイト
登録時にユーザー名を自動生成するサイト(メールアドレスやランダムな文字列から生成する場合など)では、ユーザーは割り当てられたユーザー名を知らないか覚えていない可能性があります。このモジュールにより、常にメールアドレスでログインできることが保証されます。
Tips
- このモジュールは設定不要 - 有効化後すぐに動作します
- バリデーション時にメールアドレスがユーザー名より優先されるため、入力されたテキストがユーザー名と別のユーザーのメールアドレスの両方に一致する場合、メールの一致が使用されます
- REST API認証では、資格情報を'name'(メールまたはユーザー名)と'pass'フィールドを含むJSONとして送信します
- このモジュールはDrupalのフラッドコントロールおよびセキュリティ機能とシームレスに統合されます
- REST API経由のパスワードリセットも'name'フィールドでメールアドレスをサポートします
Technical Details
Hooks 2
hook_help
管理者向けヘルプページでモジュールのヘルプテキストを提供します。
hook_form_user_login_form_alter
標準のDrupalユーザーログインフォームを変更し、ユーザー名に加えてメールアドレスも受け付けるようにします。
Troubleshooting 3
drush crまたは/admin/config/development/performanceからDrupalのキャッシュをクリアしてください。ルートの変更を有効にするにはキャッシュの再構築が必要です。
メールアドレスを別の'email'フィールドではなく、JSONペイロードの'name'フィールドに送信していることを確認してください。APIは標準形式を期待します: {"name": "user@example.com", "pass": "password"}
ユーザー名が別のユーザーのメールアドレスと一致する場合、メール検索が優先されます。これは一貫した動作を保証するための設計によるものですが、適切に設定されたサイトではこのような状況はまれです。
Security Notes 4
- このモジュールはログイン試行に対するDrupal組み込みのフラッドコントロールを維持し、ブルートフォース攻撃から保護します
- ユーザー名またはメールが使用されたかに関係なく、失敗したログイン試行は適切にログに記録されます
- このモジュールはシステムにメールアドレスが存在するかどうかを公開しません - 無効な資格情報は同じエラーメッセージを返します
- すべての認証フローはセキュリティチェックをバイパスすることなく、DrupalのcoreのセキュリティメカニズムをD使用します