📦 注文バリデーターブロック
注文バリデーターブロックは、Nodeblocksアプリケーションにおける注文関連操作のための検証機能を提供します。これらのバリデーターは、注文管理と処理のための適切なアクセス制御とデータ検証を確保します。
🎯 概要
注文バリデーターブロックは以下を目的として設計されています:
- 所有権と権限に基づく注文アクセスの検証
- ユーザーベースのアクセス制御による適切な注文管理の確保
- ユーザー検証による注文作成のサポート
- 安全な操作のための注文固有の検証ロジックの処理
- 注文ワークフローのための再利用可能な検証の提供
📋 注文バリデーター種類
アクセス制御バリデーター
注文リソースに対するユーザー権限をチェックするバリデーター。
🔧 利用可能な注文バリデーター
validateOrderAccess
許可されたサブジェクトとトークン情報に基づいて注文アクセスを検証します。
目的: ユーザーが適切な注文所有権と権限を持つことを確保
パラメータ:
allowedSubjects
:string[]
- 許可されたユーザータイプ/サブジェクトの配列authenticate
:Authenticator
- 認証機能(オプション、デフォルトはgetBearerTokenInfo)payload
:RouteHandlerPayload
- リクエストコンテキストとデータを含む
戻り値: void
- ユーザーが適切な権限を持つ場合は通過
スロー:
- NodeblocksError (401) メッセージ「App token is not valid」または「User token is not valid」(無効なトークン用)
- NodeblocksError (400) メッセージ「must have userId when creating a new order」(新規注文でのuserId不足用)
- NodeblocksError (403) メッセージ「Order has no user」(ユーザーのない注文用)
- NodeblocksError (403) メッセージ「User is not authorized to access this order」(不正アクセス用)
- NodeblocksError (404) メッセージ「Order not found」(注文が存在しない場合)
- NodeblocksError (401) メッセージ「Token does not have a valid access type」(無効なトークンタイプ用)
サポートされるサブジェクト:
'owner'
- 注文所有者アクセス
注文IDソース(順序で確認):
payload.context.data.orderId
payload.params.requestParams.orderId
payload.params.requestQuery.orderId
payload.params.requestBody.orderId
ユーザーIDソース(新規注文用):
payload.context.data.userId
payload.params.requestBody.userId
使用方法:
import { validators } from '@nodeblocks/backend-sdk';
const { validateOrderAccess } = validators;
// 注文所有者アクセス
compose(validateOrderAccess(['owner']), orderHandler);
// 注文所有者または管理者アクセス
compose(validateOrderAccess(['owner', 'admin']), orderHandler);
📋 検証フロー
新規注文作成
- トークンの有効性を確認
- userIdの存在を検証
- アクセス権限をチェック
既存注文アクセス
- トークンの有効性を確認
- 注文の存在を検証
- 注文の所有権を確認
- ユーザーアクセス権限を評価
エラー処理
すべての検証エラーは適切なHTTPステータスコードとメッセージを含みます。
🔗 関連ドキュメント
- 注文スキーマブロック - 注文データ検証と契約
- 注文ハンドラーブロック - 注文ビジネスロジック関数
- 注文ルートブロック - 注文HTTPエンドポイント定義
- 注文フィーチャーブロック - 注文コンポーズ機能