Docs Menu
Docs Home
/
MongoDB Atlas
/ /

認証 Triggers

項目一覧

  • 構成
  • 認証イベント

認証triggerは、ユーザーが 認証プロバイダと対話するときに起動します。 認証トリガー を使用して、高度なユーザー管理を実装できます。 一部の用途には、次のようなものがあります。

  • 連結クラスターに新しいユーザー データを保存します 。

  • ユーザーの削除時にデータの整合性を維持します。

  • ログイン時にユーザーの情報を使用してサービスを呼び出します。

認証トリガーには、次の構成オプションがあります。

フィールド
説明
Trigger Type
trigger のタイプ。 認証トリガーの場合は、この値を AUTHENTICATIONに設定します。
Trigger Name
trigger の名前。
Linked Function
trigger が起動時に実行する関数の名前。 このオブジェクトは、認証イベントオブジェクトによって trigger が起動した後に trigger が関数に渡す唯一の引数です。
Operation Type
trigger を起動させる認証操作の種類
Providers
1 つ以上の認証プロバイダのタイプのリスト。 trigger は、これらのプロバイダーによって生成された認証イベントのみをリッスンします。

認証 イベントは、認証プロバイダーとユーザーのインタラクションを表します。 各イベントは、次のいずれかの操作タイプを持つ 1 人のユーザー アクションに対応します。

操作タイプ
説明
LOGIN
ログインするユーザーの単一のインスタンスを表します。
CREATE
新しいユーザーの作成を表します。
DELETE
ユーザーの削除を表します。 削除されたユーザーが複数のプロバイダーにリンクされている場合、そのユーザーのDELETEイベントにはリンクされたすべてのプロバイダーが含まれます。

認証イベント オブジェクトの形式は次のとおりです。

{
"operationType": <string>,
"providers": <array of strings>,
"user": <user object>,
"time": <ISODate>
}
フィールド
説明
operationType
認証イベントの操作タイプ
providers

イベントを発行した認証プロバイダ。 次の名前の 1 つは、各認証プロバイダを表します。

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "custom-token"

  • "custom-function"

  • "oauth2-facebook"

  • "oauth2-google"

  • "oauth2-apple"

user
認証プロバイダと対話したユーザーのユーザーオブジェクト。
time
イベントが発生した時刻。

あるオンラインショップが、各カスタマーのカスタムメタデータを Atlas に保存したいと考えています。 各カスタマーには、 store.customersコレクション内のドキュメントが必要です。 その後、店舗はカスタマーのドキュメントにメタデータをレコードしてクエリを実行できます。

コレクションは各カスタマーを表す必要があります。 これを保証するために、ストアは認証triggerを作成します。 この trigger は、メール/パスワード認証プロバイダで新しく作成されたユーザーをリッスンし、リンクされた関数createNewUserDocument認証イベントオブジェクトを渡します。

createNewUserDocument関数は、ユーザーとそのアクティビティを説明する新しいドキュメントを作成します。 次に、この関数はドキュメントをstore.customersコレクションに挿入します。

createNewUserDocument 関数
exports = async function(authEvent) {
const mongodb = context.services.get("mongodb-atlas");
const customers = mongodb.db("store").collection("customers");
const { user, time } = authEvent;
const isLinkedUser = user.identities.length > 1;
if(isLinkedUser) {
const { identities } = user;
return users.updateOne(
{ id: user.id },
{ $set: { identities } }
)
} else {
return users.insertOne({ _id: user.id, ...user })
.catch(console.error)
}
await customers.insertOne(newUser);
}

Tip

以下も参照してください。

戻る

予定されたTriggers