メインコンテンツまでスキップ
バージョン: 0.13.0 (Previous)

✅ 組織バリデーター

組織ルートは、ルートペイロードに対して以下のローカルおよび共通バリデーターファクトリーを組み合わせます。バリデーターはレスポンス値なしで解決され、失敗時にはハンドラーパイプラインの実行前にソース定義の NodeblocksError をスローします。

一覧

バリデーター読み取る値成功条件失敗 / エラー利用箇所
isAuthenticated()context.authenticate または Bearer フォールバック選択された認証トランスポートがリクエストを受け入れる。認証アダプターエラー。18 のすべての Organization ルート
checkIdentityType(['admin'])認証アダプター、db.identitiesconfiguration.identity.typeIds呼び出し元が構成済みの管理者タイプを持つ。セットアップは 500、トークンは 401、アイデンティティ/アクセスは 40318 のすべての Organization ルート。管理者専用ルートでは直接、または some(...) を通じて実行。
some(...validators)指定されたバリデーター少なくとも 1 つの分岐が成功する。すべての分岐が失敗した場合、最初に収集されたバリデーターエラー。getOrganizationRouteupdateOrganizationRoutedeleteOrganizationRoute、メンバールート、階層/アップロード/変更リクエストルート、getOrganizationFollowersRoute
all(...validators)指定されたバリデーターすべての分岐が順に成功する。最初に失敗したバリデーターエラー。upsertOrganizationMembersRoutedeleteOrganizationMemberRoute
isSelf(path)認証結果と構成済みペイロードパストークンの identityId が対象 ID と一致する。401403findOrganizationsForMemberRoute
hasOrgRole(...)組織ストア、ロール構成、トークン、組織 ID パス呼び出し元が許可された構成済みロールを持つメンバーである。400401403、または 500ルートの組織ロール分岐。
hasOrgRoleSameOrAbove(...)組織ストア、ロール構成、トークン、組織/メンバーパス呼び出し元ランクが対象メンバーランク以上である。400401403、または 500deleteOrganizationMemberRoute
hasOrgRoleAssignmentPermission(...)組織ストア、ロール構成、トークン、組織/メンバーパス呼び出し元が要求されたすべてのロールを割り当てられる。400401403422、または 500upsertOrganizationMembersRoute
hasOrgOwnerRemainingAfterMemberRemoval(...)組織ストア、ロール構成、組織/メンバーパス削除後も owner が残る。400403409、または 500deleteOrganizationMemberRoute
hasOrgOwnerRemainingAfterMembersUpsert(...)組織ストア、ロール構成、組織/メンバーパスupsert 後も owner が残る。400403409、または 500upsertOrganizationMembersRoute

詳細

isAuthenticated()

実装

シグネチャ: isAuthenticated(): Validatorcontext.authenticate を呼び出します。organizationService はデフォルトで Bearer トランスポートを選択し、authMode'cookie' のときは Cookie トランスポートを選択します。

利用箇所: createOrganizationRoutegetOrganizationRoutefindOrganizationsRouteupdateOrganizationRouteupdateOrganizationAsAdminRoutedeleteOrganizationRoute、すべてのメンバールート、階層/アップロード/変更リクエストルート、getOrganizationFollowersRoute の先頭バリデーターです。

checkIdentityType(['admin'])

実装

シグネチャ: checkIdentityType(['admin']): Validatordb.identitiesconfiguration.identity.typeIds.admin を読み取り、認証してアイデンティティを読み込み、構成済み管理者タイプを受け入れます。セットアップの欠落は 500、トークン失敗は 401、アイデンティティ/タイプ失敗は 403 です。

利用箇所: createOrganizationRoutefindOrganizationsRouteupdateOrganizationAsAdminRoute では認証直後に直接実行され、残りのすべての Organization ルートでは some(...) の管理者分岐になります。

some(...validators)

実装

シグネチャ: some(...args: Validator[]): Validator。管理者または代替条件の分岐コンビネーターです。メンバー一覧ルートは admin または isSelf を使用し、他のすべての一覧分岐は admin または Organization ロール条件を使用します。

利用箇所: getOrganizationRouteupdateOrganizationRoutedeleteOrganizationRoutegetOrganizationMemberRoleRoutecheckOrganizationMemberExistenceRoutefindOrganizationMembersRouteupsertOrganizationMembersRoutedeleteOrganizationMemberRoutefindOrganizationsForMemberRoutefindOrganizationDescendantsRoute、アップロード/変更リクエストルート、getOrganizationFollowersRoute

all(...validators)

実装

シグネチャ: all(...args: Validator[]): Validator。指定されたすべての分岐が順に成功することを必要とします。

利用箇所: upsertOrganizationMembersRoute の非管理者分岐を形成します: hasOrgRole(['owner', 'admin'], ['params', 'requestParams', 'organizationId'])hasOrgRoleAssignmentPermission(['params', 'requestParams', 'organizationId'], ['params', 'requestBody'])deleteOrganizationMemberRoute では、同じ owner/admin ロール検査と、対象の requestParams.identityId を使う hasOrgRoleSameOrAbove を組み合わせます。

isSelf(path)

実装

シグネチャ: isSelf<T extends string>(identityIdPathInPayload: [T, ...T[]]): Validator。構成済みパス値が有効なトークンのアイデンティティ ID と一致することを必要とします。

利用箇所: findOrganizationsForMemberRoute は、非管理者の some(...) 分岐として isSelf(['params', 'requestParams', 'identityId']) を呼び出します。

hasOrgRole(...)

実装

シグネチャ: hasOrgRole(allowedRoles, organizationIdPathInPayload): Validator。すべての Organization 呼び出しは ['params', 'requestParams', 'organizationId'] を読み取ります。getOrganizationRouteowneradminmember を許可します。メンバーロール・存在確認・メンバー一覧・子孫・メンバー変更のロール検査は owner または admin を許可し、更新・削除・アップロード・変更リクエスト・フォロワーのロール検査は owner を許可します。db.organizationsconfiguration.organization.roles を必要とし、セットアップは 500、無効なトークンは 401、無効な ID は 400、検索/メンバーシップ/ロール失敗は 403 です。

利用箇所: ルートの組織ロール分岐。

hasOrgRoleSameOrAbove(...)

実装

シグネチャ: hasOrgRoleSameOrAbove(organizationIdPathInPayload, memberIdPathInPayload): Validator。デフォルトの昇順ロールキーは memberadminowner です。構成/順序の不一致は 500、トークン失敗は 401、無効なパスは 400、許可されないメンバーシップ/ランクは 403 です。

利用箇所: deleteOrganizationMemberRoute は、all(...) 内で hasOrgRoleSameOrAbove(['params', 'requestParams', 'organizationId'], ['params', 'requestParams', 'identityId']) を呼び出します。

hasOrgRoleAssignmentPermission(...)

実装

シグネチャ: hasOrgRoleAssignmentPermission(organizationIdPathInPayload, membersPathInPayload): Validator。呼び出し元のロールランク以下の割り当てを許可します。メンバーの欠落/無効は 400、構成済み/要求ロールの無効は 422 または 500、ランク不足は 403 です。

利用箇所: upsertOrganizationMembersRoute は、all(...) 内で hasOrgRoleAssignmentPermission(['params', 'requestParams', 'organizationId'], ['params', 'requestBody']) を呼び出します。

hasOrgOwnerRemainingAfterMemberRemoval(...)

実装

シグネチャ: hasOrgOwnerRemainingAfterMemberRemoval(organizationIdPathInPayload, memberIdPathInPayload): Validator。削除後に構成済み owner が残らない場合は 409 を返します。無効なペイロードは 400、組織検索失敗は 403、セットアップ欠落は 500 です。

利用箇所: deleteOrganizationMemberRoute は、some(...) の後に hasOrgOwnerRemainingAfterMemberRemoval(['params', 'requestParams', 'organizationId'], ['params', 'requestParams', 'identityId']) を呼び出します。

hasOrgOwnerRemainingAfterMembersUpsert(...)

実装

シグネチャ: hasOrgOwnerRemainingAfterMembersUpsert(organizationIdPathInPayload, membersPathInPayload): Validator。要求されたメンバーロールをオーバーレイし、構成済み owner が残らない場合は 409 を返します。無効なペイロードは 400、組織検索失敗は 403、セットアップ欠落は 500 です。

利用箇所: upsertOrganizationMembersRoute は、some(...) の後に hasOrgOwnerRemainingAfterMembersUpsert(['params', 'requestParams', 'organizationId'], ['params', 'requestBody']) を呼び出します。