✅ Commonバリデーター
Commonバリデーターは、標準ルートペイロードに対してクロスドメインの認証・認可ルールを合成します。ファクトリはValidatorを返します。成功したバリデーターは値なしで解決し、失敗するとNodeblocksErrorをスローします。
目録
| エクスポート | 種類 | 入力 / 参照 | 成功条件 | 失敗 / エラー |
|---|---|---|---|---|
all | バリデーターcomposer | 1つ以上のバリデーターとルートペイロード | すべてのバリデーターが順序通り成功。 | 初めてのスローされたエラーで即座に失敗。 |
checkIdentityType | バリデーターファクトリ | 許可されたタイプキー、authアダプター、アイデンティティコレクション、アイデンティティタイプ設定 | 認証済みアイデンティティが許可された設定済みタイプを持つ。 | 500セットアップ、401トークン、または403アイデンティティ/認可エラー。 |
isAuthenticated | バリデーターファクトリ | context.authenticate、またはBearerフォールバック | 選択された認証アダプターがリクエストを受け入れる。 | 認証アダプターエラーを伝播。 |
isSelf | バリデーターファクトリ | ペイロードパスと認証済みアイデンティティ | ターゲットIDが存在し、トークンアイデンティティIDに等しい。 | 401無効トークンまたは403不足/非一致アイデンティティID。 |
Resource | 型 | N/A | ownsResourceによって受け入れられるコレクションの名前付け。 | N/A |
getResourceById | クエリヘルパー | MongoDBコレクションとパブリックリソースID | 一致するドキュメントまたはnullをResultAsyncで返す。 | データベースの拒絶はunknownとして返される。 |
ownsResource | バリデーターファクトリ | リソース名、所有者パス、リソースIDペイロードパス、authとdbコンテキスト | フェッチされたリソース所有者がトークンアイデンティティIDに等しい。 | 失敗した前提条件に応じて400、401、403、または500。 |
some | バリデーターcomposer | 1つ以上のバリデーターとルートペイロード | 少なくとも1つのバリデーターが成功。 | 最初に収集されたNodeblocksErrorをスロー;非NodeblocksError拒絶は500 Unknown errorになる。 |
詳細
all
実装
シグネチャ:all(...args: Validator[]): Validator。返されたバリデーターは引数順序で提供された各バリデーターを待機し、最初の拒絶で停止します。引数なしの場合、すぐに成功します。すべてのアクセス条件が満たされる場合に使用します。
checkIdentityType
実装
シグネチャ:checkIdentityType<T extends string>(allowedTypes: [T, ...T[]]): Validator。db.identitiesとconfiguration.identity.typeIdsを必要とし、context.authenticateまたはBearerフォールバックを通じて認証し、トークンアイデンティティを読み込み、そのtypeIdを提供されたキーの構成済みIDと比較します。
データベースまたはタイプ構成の欠落は500を;無効なユーザートークンは401を;アイデンティティ検索の失敗、不足のタイプID、または許可されないタイプは403を生成します。Authentication、Category、Invitation、Location、Order、Organization、Product、Profile、Userルートで直接およびsomeを通じて使用されます。
isAuthenticated
実装
シグネチャ:isAuthenticated(): Validator。サービスがアダプターを提供した場合context.authenticate(payload)を呼び出し、そうでない場合はBearerトークンアダプターを呼び出します。返されたトークン情報を検査しません;成功と失敗は選択されたアダプターによって定義されます。AuthenticationルートコンシューマーについてはAuthenticationバリデーターを参照してください。
isSelf
実装
シグネチャ:isSelf<T extends string>(identityIdPathInPayload: [T, ...T[]]): Validator。有効なユーザーアクセストークンを必要とし、呼び出し元が提供した正確なRamdaパスからターゲットアイデンティティIDを読み込み、トークンidentityIdと比較します。不足のターゲットと不一致は403です。ドメインルートコンシューマーについてはIdentityバリデーターを参照してください。
Resource
実装
Resourceは联合型 'chatChannels' | 'chatMessages' | 'orders' | 'profiles' | 'subscriptions' | 'notifications'です。ownsResourceによってサポートされるデータベースコレクション名を記述します。
getResourceById
実装
シグネチャ:getResourceById(collection: Collection, id: string): ResultAsync<WithId<Document> | null, unknown>。collection.findOne({ id: String(id) })でクエリを実行し;見つからないレコードは成功したnull、拒絶されたデータベース操作は元のunknownエラーとしてキャプチャされます。SDKは現在これをバリデーター名前空間からエクスポートしますが、ソースではブロックへの将来の変換としてマークされています。
ownsResource
実装
シグネチャ:ownsResource(resource, ownerIdPathInResource, resourceIdPathInPayload): Validator。有効なユーザーアクセストークン、選択されたデータベースコレクション、提供されたペイロードパスのリソースIDを必要とします。getResourceByIdでレコードを読み込み、提供された所有者パスでその所有者を読み込み、その値がトークンidentityIdに等しい場合のみ成功します。
失敗は、前提条件に応じて401 Invalid token、500 Resource does not exist、400 Invalid resource ID、またはデータベースエラー、不足の所有者ID、所有不一致の場合403です。ドメインラッパーはChat channels/messages、Orders、Profiles、Subscriptions、Notifications用にこの契約を使用します;Chat所有バリデーターを参照してください。
some
実装
シグネチャ:some(...args: Validator[]): Validator。Promise.allSettledで提供されたすべてのバリデーターを同時に開始し、少なくとも1つが満たされた場合に成功します。すべてが拒絶した場合、引数順序で最初に収集されたエラーをスローします;非NodeblocksError拒絶はNodeblocksError(500, 'Unknown error', 'validator')に置き換えられます。バリデーターがない場合、収集されるエラーがないため成功します。
ルートは管理者または自身、管理者または所有者アクセスなどの代替案のために使用します。コンシューマーにはAuthenticationバリデーター、Chatバリデーター、および対応するOrder、Product、Profile、Organization、Userルートが含まれます。