Open2

auth0にユーザが登録されたときに、外部のDBにもユーザ情報を保存する

taroodrtaroodr

auth0 の機能の1つActionsを使うと良い.
この機能を使うことで〇〇したときに△△するといったことが実現できる。

外部DBへのユーザ登録処理は以下のtriggerのうちどちらかを使うことで実現可能

Post User Registration

ユーザ登録後に実行される(非同期)
実行された関数の成功・失敗に関係なく、auth0へのユーザ登録は正常に終了する

Login

ログインした後に実行される(同期)
実行された関数が失敗した場合はログイン処理自体に失敗する
→ 外部DBへの登録が失敗した場合、ログイン処理自体も失敗させたいような場合に使うと良さそう

taroodrtaroodr

実際のコード

Post User Registration

exports.onExecutePostUserRegistration = async (event) => {
  try {
    // 外部DBへ保存するAPIを呼び出す
  } catch (e) {
    console.log(e);
  }
};

Login

exports.onExecutePostLogin = async (event, api) => {
  // ログインした回数が1回目以外の場合は新規登録ではないのでreturn
  if (event.stats.logins_count !== 1) {
    return;
  }

  try {
    // 外部DBへ保存するAPIを呼び出す
  } catch (e) {
    console.log(e);
    api.access.deny(`Could not create user doc. logins_count = ${event.stats.logins_count}`);
  }
};

参考
https://community.auth0.com/t/link-react-app-users-to-db-with-token-or-user-data/48221/4
https://community.auth0.com/t/how-can-i-add-a-user-to-my-backend-database-after-they-register/58857
https://community.auth0.com/t/how-to-save-user-id-in-to-my-database/60554
https://community.auth0.com/t/custom-actions-what-happens-with-errors/64391