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

🏢 組織バリデーターブロック

組織バリデーターブロックは、Nodeblocksアプリケーションにおける組織関連操作のための検証機能を提供します。これらのバリデーターは、組織管理とメンバーシップ操作のための適切なアクセス制御とデータ検証を確保します。


🎯 概要

組織バリデーターブロックは以下を目的として設計されています:

  • メンバーシップと権限に基づく組織アクセスの検証
  • 役割ベースのアクセス制御による適切な組織管理の確保
  • 組織メンバーシップ検証のサポート
  • 安全な操作のための組織固有の検証ロジックの処理
  • 組織ワークフローのための再利用可能な検証の提供

📋 組織バリデーター種類

アクセス制御バリデーター

組織リソースに対するユーザー権限をチェックするバリデーター。


🔧 利用可能な組織バリデーター

validateOrganizationAccess

許可されたサブジェクトとトークン情報に基づいて組織アクセスを検証します。

目的: ユーザーが適切な組織メンバーシップと権限を持つことを確保

パラメータ:

  • allowedSubjects: string[] - 許可されたユーザータイプ/サブジェクトの配列
  • authenticate: Authenticator - 認証機能(オプション、デフォルトはgetBearerTokenInfo)
  • payload: RouteHandlerPayload - リクエストコンテキストとデータを含む

戻り値: void - ユーザーが適切な権限を持つ場合は通過

スロー:

  • NodeblocksError (401) メッセージ「App token is not valid」または「User token is not valid」(無効なトークン用)
  • NodeblocksError (404) メッセージ「Organization not found」(組織が存在しない場合)
  • NodeblocksError (403) メッセージ「Organization has no users」(ユーザーのない組織用)
  • NodeblocksError (403) メッセージ「User does not belong to this organization」(非メンバー用)
  • NodeblocksError (403) メッセージ「User is not authorized to access this organization」(不正アクセス用)
  • NodeblocksError (401) メッセージ「Token does not have a valid access type」(無効なトークンタイプ用)

サポートされるサブジェクト:

  • 'admin' - 管理者アクセス
  • 'member' - 組織メンバーアクセス
  • 'owner' - 組織所有者アクセス

組織IDソース(順序で確認):

  • payload.context.data.organizationId
  • payload.params.requestParams.organizationId
  • payload.params.requestQuery.organizationId
  • payload.params.requestBody.organizationId

ユーザー役割設定(デフォルト):

{
admin: 'admin',
member: 'member',
owner: 'owner'
}

アクセスロジック:

  • アプリトークン: appIdが有効な場合は常に通過
  • ユーザートークン:
    • 組織の存在を検証
    • 組織にユーザーがいることを検証
    • ユーザーが組織に属することを検証
    • ユーザー役割が許可されたサブジェクトと一致することを検証
    • アクセスが許可されるには少なくとも1つのサブジェクトが一致する必要がある

使用方法:

import { validators } from '@nodeblocks/backend-sdk';

const { validateOrganizationAccess } = validators;

// 組織メンバーアクセス
compose(validateOrganizationAccess(['member']), organizationHandler);

// 組織所有者または管理者アクセス
compose(validateOrganizationAccess(['owner', 'admin']), organizationHandler);

// 組織の全メンバー(任意の役割)
compose(validateOrganizationAccess(['owner', 'admin', 'member']), organizationHandler);

📋 検証フロー

メンバーシップ検証

  1. トークンの有効性を確認
  2. 組織の存在を検証
  3. 組織ユーザーリストの存在を確認
  4. ユーザーメンバーシップを検証
  5. ユーザー役割権限を評価

役割ベースアクセス

組織バリデーターは階層的役割システムをサポートします:

  • Owner: 完全な組織制御
  • Admin: 管理業務とメンバー管理
  • Member: 基本的な組織アクセス

エラー処理

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


🔗 関連ドキュメント