🪪 注文バリデーター
注文バリデーターは、Nodeblocksアプリケーションで注文関連操作用の検証関数を提供します。これらのバリデーターは、注文管理と処理のための適切なアクセス制御とデータ検証を確保します。
🎯 概要
注文バリデーターは以下の目的で設計されています:
- 注文アクセスを検証 - 所有権と権限に基づいて
- 適切な注文管理を確保 - ユーザーベースのアクセス制御で
- 注文作成をサポート - ユーザー検証を含む
- 注文固有の検証ロジックを処理 - セキュアな操作のため
- 再利用可能な検証を提供 - 注文ワークフロー用
📋 注文バリデータータイプ
アクセス制御バリデーター
注文リソースのユーザー権限をチェックするバリデーター。
🔧 利用可能な注文バリデーター
ownsOrder
認証されたユーザーアクセス用の注文所有権バリデーター。
目的: 注文所有者のみが注文にアクセス/変更できることを確保します
パラメータ:
resourceIdPathInPayload: ペイロード内のorderIdへのタプルパス(例:['requestParams', 'orderId'])
戻り値: void - 認証されたアイデンティティが注文を所有している場合は通過
スロー:
- NodeblocksError (401) メッセージ "Invalid token"
- NodeblocksError (500) メッセージ "Resource does not exist"
- NodeblocksError (400) メッセージ "Invalid resource ID"
- NodeblocksError (403) メッセージ "Failed to fetch resource"
- NodeblocksError (403) メッセージ "Invalid owner ID"
- NodeblocksError (403) メッセージ "Identity is not the owner of the resource"
使用例:
import { validators } from '@nodeblocks/backend-sdk';
const { ownsOrder } = validators;
withRoute({
validators: [
ownsOrder(['requestParams', 'orderId'])
]
});
validateOrderAccess
許可されたサブジェクトとトークン情報に基づいて注文アクセスを検証します。
非推奨
このバリデーターは非推奨です。
代替: ownsOrder。
目的: ユーザーが適切な注文所有権と権限を持っていることを確保します
パラメータ:
allowedSubjects:string[]- 許可されたユーザータイプ/サブジェクトの配列authenticate:Authenticator- 認証関数(オプション、デフォルトはgetBearerTokenInfo)payload:RouteHandlerPayload- リクエストコンテキストとデータを含む
戻り値: void - ユーザーが適切な権限を持っている場合は通過
スロー:
- NodeblocksError (401) メッセージ "App token is not valid" または "User token is not valid"
- NodeblocksError (400) メッセージ "must have identityId when creating a new order"
- NodeblocksError (404) メッセージ "Order not found"
- NodeblocksError (403) メッセージ "Order has no identity"
- NodeblocksError (403) メッセージ "Identity is not authorized to access this order"
- NodeblocksError (401) メッセージ "Token does not have a valid access type"
サポートされているサブジェクト:
'owner'- 注文所有者アクセス
Order IDソース(順にチェック):
payload.context.data.orderIdpayload.params.requestParams.orderIdpayload.params.requestQuery.orderIdpayload.params.requestBody.orderId
Identity IDソース(新しい注文用):
payload.context.data.identityIdpayload.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'])]
});