はじめに
Gakken LEAPで働いているSonokiです。
普段はShikaku Passというオンライン学習サービスの開発を行っています。
今回は、Auth0で新規ユーザを作成した際にパスワードリセットメールを送信する方法についてご紹介します。
やりたいこと
Shikaku Passでは、Auth0を利用してユーザ管理を行っています。
ユーザアカウントを作成した際に、ユーザに対してパスワードリセットメールを送信する方法について説明します。
方法
全体の流れは以下です。
- メールアドレス検証メールの配信を無効化する
- ユーザ作成時にパスワードリセットメールを送信するためのActionを作成する
- 作成したActionをTriggersに登録する
メールアドレス検証メールの配信を無効化する
Auth0ではユーザ作成時にメールアドレス検証メールが自動的に送信されます。
このメールはユーザがメールアドレスを確認するためのもので、パスワードリセットメールとは異なります。
この設定を無効化しないと、ユーザ作成時にメールアドレス検証メールとパスワードリセットメールの両方が送信されてしまいます。
以下の手順でメールアドレス検証メールの配信を無効化します。
- Auth0のダッシュボードにログインします
- 左側のメニューから「Branding > Email Templates」を選択します
- Templateの選択タブにて「Verification Email (Link)」を選択します
- 「Template enabled」のチェックを外し、「Template disabled」に変更します
これで、新規ユーザを作成した際にメールアドレス検証メールが送信されなくなります。
ユーザ作成時にパスワードリセットメールを送信するためのActionを作成する
Auth0にはActionsという機能があります。
これは、特定のイベントが発生した際に実行する処理の流れを設定できる機能です。
このActionsで実行する処理は、用意されているものもあれば独自に作成する必要があるものもあります。
今回は、ユーザ作成時にパスワードリセットメールを送信するための処理を作成します。
処理はActionと呼ばれ、自作のActionはLibraryにて管理されます。
以下の手順でActionを作成します。
- Auth0のダッシュボードにログインします
- 左側のメニューから「Actions > Library」を選択します
- 「Create Action」から「Build from scratch」を選択します
-
Name
に適当な名前を入力します -
Trigger
の選択タブにて「Post User Registration」を選択します - 「Create」をクリックします
- 開かれるコードエディタに以下のコードを入力します
- エディターの左側から「Dependencies」を選択し、「Add Dependency」をクリックします
-
Name
に「axios」と入力し、「Create」をクリックします - 「Deploy」をクリックし、変更を保存します
exports.onExecutePostUserRegistration = async (event, api) => {
const axios = require("axios");
const tenantId = event.tenant.id;
const domain = `${tenantId}.jp.auth0.com`;
const sendPasswordChangeEmail = async (email, connection) => {
try {
await axios.post(
`https://${domain}/dbconnections/change_password`,
{
email: email,
connection: connection,
},
{
headers: {
"Content-Type": "application/json",
},
}
);
console.log("Password change email sent successfully.");
} catch (error) {
console.error("Error sending password change email:", error);
// エラーを再スローして、Auth0がエラーを認識できるようにする
throw error;
}
};
// ユーザのメールアドレスと接続名を使用
try {
await sendPasswordChangeEmail(event.user.email, event.connection.name);
} catch (error) {
console.error("Error in post user registration action:", error);
}
};
作成したActionをTriggersに登録する
先ほど作成したActionをTriggerに設定しましょう。
- Auth0のダッシュボードにログインします
- 左側のメニューから「Actions > Triggers」を選択します
- 「post-user-registration」を選択します
-
Add Action
からCustom
を選択すると、先程作成したActionが表示されます - Actionをフローに追加します
- 「Apply」をクリックして保存します
テストする
以上の設定が完了したら、早速確認してみましょう。
Auth0から自分のメールアドレスで新規ユーザを作成します。
すると、以下のようなパスワードリセットメールを受信することができました🎉
また、メールアドレスの検証メールが送信されていないことも確認できました。
まとめ
今回は、Auth0で新規ユーザを作成した際にパスワードリセットメールを送信する方法についてご紹介しました。
どなたかの参考になれば幸いです。
エンジニア募集中
Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!