📦 Order バリデーター
Order 検証子ブロックは、NodeBlocks アプリケーションの注文関連操作のための検証関数を提供します。これらの検証子は、注文管理と処理のための適切なアクセス制御とデータ検証を確保します。
🎯 概要
Order バリデーターは次のことを目的として設計されています:
- 所有権と権限に基づいて注文アクセスを検証する
- ユーザーベースのアクセス制御で適切な注文管理を確保する
- ユーザー検証を使用した注文作成をサポートする
- 安全な操作のための注文固有の検証ロジックを処理する
- 注文ワークフロー用の再利用可能な検証を提供する
📋 Order バリデータタイプ
アクセスコントロールバリデーター
注文リソースのユーザー権限をチェックする検証子。
🔧 利用可能な Order バリデーター
ownsOrder
認証されたユーザーアクセスのための注文所有権検証子。
目的: 注文所有者のみが注文にアクセス/変更できることを確保します
パラメーター:
resourceIdPathInPayload
: ペイロード内のorderId
へのタプルパス(例:['requestParams', 'orderId']
)
戻り値: void - 認証されたアイデンティティが注文を所有する場合に通過
スロー:
- NodeblocksError (401) with message "Invalid token"
- NodeblocksError (500) with message "Resource does not exist"
- NodeblocksError (400) with message "Invalid resource ID"
- NodeblocksError (403) with message "Failed to fetch resource"
- NodeblocksError (403) with message "Invalid owner ID"
- NodeblocksError (403) with message "Identity is not the owner of the resource"
使用例:
import { validators } from '@nodeblocks/backend-sdk';
const { ownsOrder } = validators;
withRoute({
validators: [
ownsOrder(['requestParams', 'orderId'])
]
});
validateOrderAccess
許可されたサブジェクトとトークン情報に基づいて注文アクセスを検証します。
Deprecated
このバリデーターは非推奨です。
置き換え: ownsOrder
。
目的: ユーザーが適切な注文所有権と権限を持っていることを確保します
パラメーター:
allowedSubjects
:string[]
- 許可されたユーザータイプ/サブジェクトの配列authenticate
:Authenticator
- 認証関数(オプション、デフォルトは getBearerTokenInfo)payload
:RouteHandlerPayload
- リクエストコンテキストとデータを格納
戻り値: void
- ユーザーが適切な権限を持っている場合に通過
スロー:
- NodeblocksError (401) with message "App token is not valid" or "User token is not valid"
- NodeblocksError (400) with message "must have identityId when creating a new order"
- NodeblocksError (404) with message "Order not found"
- NodeblocksError (403) with message "Order has no identity"
- NodeblocksError (403) with message "Identity is not authorized to access this order"
- NodeblocksError (401) with message "Token does not have a valid access type"
Supported Subjects:
'owner'
- 注文所有者アクセス
Order ID Sources (checked in order):
payload.context.data.orderId
payload.params.requestParams.orderId
payload.params.requestQuery.orderId
payload.params.requestBody.orderId
Identity ID Sources (for new orders):
payload.context.data.identityId
payload.params.requestBody.identityId
使用例:
import { validators } from '@nodeblocks/backend-sdk';
const { validateOrderAccess } = validators;
// Order owner access
withRoute({
-- snip --
validators: [validateOrderAccess(['owner'])]
});
// Order owner or admin access
withRoute({
-- snip --
validators: [validateOrderAccess(['owner', 'admin'])]
});
🔗 関連ドキュメント
- Order Schema Blocks - 注文データ検証と契約
- Order Handler Blocks - 注文ビジネスロジック関数
- Order Route Blocks - 注文 HTTP エンドポイント定義
- Order Feature Blocks - 注文構成フィーチャー