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

🪪 注文バリデーター

注文バリデーターは、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.orderId
  • payload.params.requestParams.orderId
  • payload.params.requestQuery.orderId
  • payload.params.requestBody.orderId

Identity IDソース(新しい注文用):

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

🔗 関連ドキュメント