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

📦 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'])]
});

🔗 関連ドキュメント