メインコンテンツまでスキップ
バージョン: 0.14.0 (最新)

✅ 注文バリデーター

注文ルートは、ローカルの ownsOrder 所有権バリデーターと、共通の認証・アクセス代替・アイデンティティタイプ・本人・組織ロールバリデーターを組み合わせます。SDK に validateOrderAccess のエクスポートはありません。

一覧

バリデーター読み取る値成功条件失敗 / エラー利用箇所
isAuthenticated()context.authenticate、またはデフォルト Bearer コンテキスト認証関数が解決する。認証関数のエラー。デフォルト Bearer 認証は 401 をスロー。作成取得検索更新削除組織一覧
some(...)指定されたバリデーター関数少なくとも 1 つの分岐が成功する。最初に収集された NodeblocksError、または 500 Unknown error作成取得検索更新削除
checkIdentityType(['admin'])db.identitiesconfiguration.identity.typeIds、認証結果ユーザーアクセストークンのアイデンティティが構成済みの admin タイプ ID を持つ。500401、または 403作成取得検索更新削除
isSelf(...)認証結果と指定されたペイロードパス対象 ID がユーザートークンの identityId と一致する。401 または 403作成検索
ownsOrderdb.orders、認証結果、注文 ID のペイロードパス保存された注文の identityId がユーザートークンの identityId と一致する。400401403、または 500取得更新削除
hasOrgRole(...)db.organizationsconfiguration.organization.roles、認証結果、組織 ID のペイロードパス呼び出し元が構成済みの owner/admin/member ロールを持つメンバーである。400401403、または 500組織一覧

詳細

isAuthenticated()

実装

シグネチャ: isAuthenticated(): Validator。指定される場合は context.authenticate(payload) を、そうでなければ getBearerTokenInfo(payload) を呼び出します。デフォルトは Authorization Bearer トークン、リクエストホスト/フィンガープリント/IP/ユーザーエージェント、configuration.authSecretsconfiguration.checkIp(デフォルトは true)を読み取ります。選択された認証エラーは伝播します。デフォルトでは、無効または不適切なアクセストークン、あるいはトークンセキュリティチェックの失敗で 401 を生成します。 正規の契約 を参照してください。

利用箇所: このファクトリーは、createOrderRoutegetOrderRoutefindOrdersRouteupdateOrderRoutedeleteOrderRoutefindOrdersByOrganizationIdRoute のすべての注文ルートのバリデーター配列で先頭です。

some(...)

実装

シグネチャ: some(...args: Validator[]): ValidatorisAuthenticated() の直後に置かれる直接バリデーターコンポーザーです。指定された 2 分岐を Promise.allSettled で並行実行し、どちらかが成功したときに成功します。両方が失敗すると、引数/結果順で最初に収集した NodeblocksError をスローします。NodeblocksError 以外の拒否は、ソース validator を持つ 500 Unknown error に置き換えられます。正規の契約を参照してください。

利用箇所: createOrderRoutegetOrderRoutefindOrdersRouteupdateOrderRoutedeleteOrderRoute

checkIdentityType(['admin'])

実装

シグネチャ: checkIdentityType(['admin']): Validatorcontext.db.identitiescontext.configuration.identity.typeIds を必要とし、認証後にユーザーアクセストークンを要求し、トークンのアイデンティティを db.identities から取得して、その typeIdidentity.typeIds.admin と比較します。コレクションまたは構成の欠落は 500、無効な非ユーザートークンは 401、アイデンティティ検索失敗・typeId 欠落・非管理者タイプは 403 です。正規の契約を参照してください。

利用箇所: createOrderRoutegetOrderRoutefindOrdersRouteupdateOrderRoutedeleteOrderRoute の最初の some(...) 分岐。

isSelf(...)

実装

シグネチャ: isSelf<T extends string>(identityIdPathInPayload: [T, ...T[]]): Validator。認証し、ユーザーアクセストークンを要求し、正確に指定されたペイロードパスの対象を読み取り、トークンの identityId と比較します。無効な非ユーザートークンは 401、対象アイデンティティ ID の欠落または不一致は 403 です。正規の契約を参照してください。

利用箇所: createOrderRoute では isSelf(['params', 'requestBody', 'identityId'])findOrdersRoute では isSelf(['params', 'requestQuery', 'identityId']) として、2 番目の some(...) 分岐になります。

ownsOrder

実装

ownsOrder はローカルの partial(ownsResource, ['orders', ['identityId']]) エクスポートです。得られるバリデーターは認証してユーザーアクセストークンを要求し、context.db.orders を読み取り、指定ペイロードパスから orderId を読み取り、パブリックな id で注文を読み込んで、保存された identityId をトークンのアイデンティティ ID と比較します。無効なトークンは 401、注文コレクションなしは 500、注文 ID 欠落は 400、検索エラー・所有者 ID 欠落・所有権不一致は 403 です。共通の ownsResource 契約を参照してください。

利用箇所: getOrderRouteupdateOrderRoutedeleteOrderRoute は、2 番目の some(...) 分岐で ownsOrder(['params', 'requestParams', 'orderId']) を呼び出します。

hasOrgRole(...)

実装

シグネチャ: hasOrgRole(allowedRoles, organizationIdPathInPayload): Validatorcontext.db.organizationscontext.configuration.organization.roles を必要とし、認証してユーザーアクセストークンを要求し、パスの組織 ID を読み取り、その組織を取得して、organization.members 内の呼び出し元を探し、メンバーのロールを対応する構成済み owneradminmember ロール値と照合します。ストア/構成の欠落は 500、無効なトークンは 401、組織 ID 欠落は 400、検索失敗・メンバーシップなし・許可されないロールは 403 です。正規の契約を参照してください。

利用箇所: findOrdersByOrganizationIdRoute でのみ isAuthenticated() の直後に実行されます: hasOrgRole(['owner', 'admin', 'member'], ['params', 'requestParams', 'organizationId'])