Google Cloud Identity Platformから送るパスワードの再設定メールを日本語化する
こんにちは、エンジニアの加藤(@tomo_k09)です。
PharmaXの一部サービスでは、Google CloudのIdentity Platform(以下Identity Platform)のマルチテナンシー構成でユーザーの管理を認証をしています。
パスワードを忘れたユーザー向けに、パスワードの再設定メールを送信する機能を実装したのですが、メールの内容を日本語化するのに少しハマりどころがありました。
そこで、この記事では日本語でパスワードリセット案内メールを送る方法についてご紹介します。
本記事の前提
- Identity Plaformでマルチテナンシー構成を採用していること
- Identity Platformでメール認証方式を採用していること
実行環境
- typescript 5.4.3
- react 18.2.0
- next 14.0.2
- firebase/auth 1.7.0
パスワードの再設定メールを送信するAPIの紹介
前提として、FirebaseのAdmin SDKにsendPasswordResetEmailというAPIが用意されています。
今回ご紹介する方法は、このAPIを使って実装します。
実装イメージは以下の通りです。
import { getAuth, sendPasswordResetEmail } from "firebase/auth";
const auth = getAuth();
sendPasswordResetEmail(auth, email)
.then(() => {
// Password reset email sent!
// ..
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
// ..
});
言語設定を日本語に変更してもメールが英語で表示された
日本語でパスワードリセットの案内メールを送るためにまずやったことは、Firebaseのテンプレートメールの言語設定を日本語にすることです。
↓のように設定しました。
Identity Platformの言語設定
しかし、言語設定を日本語にしたにも関わらず、メールの文面は英語のままでした。
Your %APP_NAME% team
Hello,Follow this link to reset your NEOPharmacy dev password for your foo@hogehoge.co.jp account.
https:// xxxxx.firebaseapp.com/__/auth/action?mode=resetPassword&oobCode=piyopiypiyo&lang=en&tenantId=hogehoge
If you didn’t ask to reset your password, you can ignore this email.
Thanks,
XXXX team
送られてきたパスワード再設定用のリンクをよくよく見ると『lang=en』となっており、ちゃんと言語設定が日本語に変更されていないようでした。
Identity Platformのマルチテナンシーを使っていると言語設定が反映されないらしい
冒頭のも書いた通り、PharamXのサービスではIdentity Platformのマルチテナンシーという機能を使っています。
どうやらマルチテナンシーを使っていると、コンソールから言語設定を日本語に変えても、メールの文面は英語のままになってしまうようでした。
そのため、auth.languageCode = 'ja';
と明示的にlanguageCodeを指定する必要があります。実装イメージは以下です。
import { getAuth, sendPasswordResetEmail } from "firebase/auth";
const auth = getAuth();
auth.languageCode = 'ja';// 言語設定を追加
sendPasswordResetEmail(auth, email)
.then(() => {
// Password reset email sent!
// ..
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
// ..
});
無事に以下のようなメールが日本語のメールが送られるようになりました。
お客様
YOUR APP の foo@hogehoge.co.jp アカウントのパスワードをリセットするには、次のリンクをクリックしてください。
https:// hogehoge.firebaseapp.com/__/auth/action?mode=resetPassword&oobCode=piyopiyo&lang=ja&tenantId=hogehoge
パスワードのリセットを依頼していない場合は、このメールを無視してください。
よろしくお願いいたします。
hogehoge チーム
おわりに
パスワード再設定メールを日本語にするという簡単そうな実装でしたが、意外と情報が落ちていなかったので、この情報が誰かの役に立てば幸いです。
PharmaXでは、様々なバックグラウンドを持つエンジニアをお待ちしております。
もし興味をお持ちの場合は、私のXアカウント(@tomo_k09)までお気軽にメッセージをいただけますと幸いです。まずはカジュアルにお話しましょう!
PharmaXエンジニアチームのテックブログです。エンジニアメンバーが、PharmaXの事業を通じて得た技術的な知見や、チームマネジメントについての知見を共有します。 PharmaXエンジニアチームやメンバーの雰囲気が分かるような記事は、note(note.com/pharmax)もご覧ください。
Discussion