Identity Platformのマルチテナントに対し、Eメールのテンプレートを変更する
前提
- Google CloudのIdentity Platformでユーザーを管理している
- マルチテナントを有効にし、特定のテナントでの作業を行っている
- email, passwordログインを有効にしている
やりたいこと
- パスワードリセット時などにユーザーに送られるメールをカスタマイズしたい。
- 具体的には、
- 文言の変更
- カスタムドメインの設定
- APP_NAMEの変更
文言の変更
基本的にはFirebaseのコンソール画面で設定する
Firebaseコンソールで対象のGCプロジェクトを選択する。
左のサイドバーから Authentication
をクリックし、Firebase Authenticationのページを開く
テンプレート
タグを押すと、各メールのテンプレートが表示されているので、ここで文言をカスタマイズできる。
カスタムドメインの設定
上記テンプレート画面から、どれでも良いのでひとつのテンプレートを選ぶ。
現在の設定の右上部分にペンアイコンの「テンプレート編集」ボタンがあるので、クリックして編集モードにする。
「ドメインをカスタマイズ」をクリックすると、カスタムドメインを設定するモーダルが現れるので、ドメインを入力し、表示された情報をもとにDNSレコードも設定する。
DNSレコードの設定が完了されると、しばらく待ったのちにドメインが全てのテンプレートに反映される。
APP_NAMEの変更
メール本文に含まれるアプリの表示名を変更したい。
デフォルトではGCプロジェクトIDが表示される。
プロジェクト全体の設定から 「公開設定」→「公開名」でAPP_NAMEを変更できる。
もし「公開設定」が表示されていない場合、以下の記事を参考に、いったんGoogle Providerを有効にすることで表示されるようになる。
APP_NAMEを変更したあとはGoogle Providerを無効もしくは削除すればよい。
各テナントにも設定を継承させる
これで準備完了...と思いきや、実際にメールを送ってみるも設定が反映されていない。
どうやら上記の変更はデフォルトのテナントにのみ有効であり、個別のテナントにも適用させたい場合はさらなる設定が必要らしい。
ドキュメントをよく確認すると、
Firebase Authentication with Identity Platform にアップグレードしてマルチテナンシーを有効にした場合は、テナント メタデータを更新して、テナントがカスタム ドメイン、メール テンプレート、カスタム SMTP 設定を継承できるようにする必要があります。そうしないと、カスタム ドメインの検証と適用が成功しても、ユーザーは依然としてデフォルト ドメインからメールを受信します。
との記載があった。このドキュメントに従い、以下のコマンドを実行する。
curl -X PATCH -d "{'inheritance':{'emailSendingConfig': true}}" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H 'Content-Type:application/json' \
https://identitytoolkit.googleapis.com/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=inheritance.emailSendingConfig
(最新のコマンドはドキュメントを確認してください)
これを実行すると、レスポンスの一部が以下のようになり、設定が継承されていることがわかる。
"inheritance": {
"emailSendingConfig": true
},
完了
上記の設定変更を行い、実際にメールを送ってみると、しっかり設定が反映されていることが確認できた。