メインコンテンツまでスキップ
バージョン: 0.4.2

📦 注文バリデーターブロック

注文バリデーターブロックは、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);

📋 検証フロー

新規注文作成

  1. トークンの有効性を確認
  2. userIdの存在を検証
  3. アクセス権限をチェック

既存注文アクセス

  1. トークンの有効性を確認
  2. 注文の存在を検証
  3. 注文の所有権を確認
  4. ユーザーアクセス権限を評価

エラー処理

すべての検証エラーは適切なHTTPステータスコードとメッセージを含みます。


🔗 関連ドキュメント