認証 Triggers
9 月2024時点で、Atlas Device SDK は非推奨となり、 9 月2025にサポートが終了する予定です。 Reactする認証イベントがなくなるため、これは認証trigger に影響します。
認証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> }
例
あるオンラインショップが、各カスタマーのカスタムメタデータを Atlas に保存したいと考えています。 各カスタマーには、 store.customers
コレクション内のドキュメントが必要です。 その後、店舗はカスタマーのドキュメントにメタデータをレコードしてクエリを実行できます。
コレクションは各カスタマーを表す必要があります。 これを保証するために、ストアは認証triggerを作成します。 この trigger は、メール/パスワード認証プロバイダで新しく作成されたユーザーをリッスンし、リンクされた関数createNewUserDocument
に認証イベントオブジェクトを渡します。
createNewUserDocument
関数は、ユーザーとそのアクティビティを説明する新しいドキュメントを作成します。 次に、この関数はドキュメントをstore.customers
コレクションに挿入します。
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); }