🛣️ アイデンティティルート
アイデンティティルートは、NodeBlocksアプリケーションでのアイデンティティ管理操作用の事前設定されたHTTPエンドポイントを提供します。これらのルートは、ブロック、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラーハンドリングを含む完全なAPIエンドポイントを作成します。
🎯 概要
アイデンティティルートは以下の目的で設計されています:
- アイデンティティ管理操作用の完全なAPIエンドポイントの提供
- 安全な操作用のブロックとバリデーターの組み合わせ
- 認証と認可チェックの包含
- 関数合成パターンのサポート
- ログ記録とエラー管理の自動処理
📋 ルート構造
各アイデンティティルートは一貫したパターンに従います:
- HTTP Method: 操作タイプを定義(GET、PATCH、DELETE)
- Path: パラメータを含むエンドポイントURLを指定
- Handler: ビジネスロジック用の合成関数チェーン
- Validators: 認証と認可チェック
🔧 利用可能なアイデンティティルート
getIdentityRoute
IDによって特定のアイデンティティを取得します。
目的: アクセス制御を含むアイデンティティデータを取得します
ルート詳細:
- Method:
GET - Path:
/identities/:identityId - Authentication: 必須(Bearerトークン)
Blocks: getIdentityById, normalizeIdentity(認証から)
Validators: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.getIdentityRoute);
findIdentitiesRoute
正規化されたリスト形式ですべてのアイデンティティを取得します。
目的: ページネーションと管理者専用アクセスでアイデンティティをリスト表示します
ルート詳細:
- Method:
GET - Path:
/identities - Authentication: 必須(Bearerトークン)
Blocks: findIdentities, normalizeIdentitiesWithoutPassword(認証から)
Validators: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.findIdentitiesRoute);
updateIdentityRoute
既存のアイデンティティを更新し、更新されたリソースを返します。
目的: アクセス制御を含むアイデンティティデータを変更します
ルート詳細:
- Method:
PATCH - Path:
/identities/:identityId - Authentication: 必須(Bearerトークン)
Blocks: updateIdentity, getIdentityById, normalizeIdentity(認証から)
Validators: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.updateIdentityRoute);
deleteIdentityRoute
IDによってアイデンティティを削除します。
目的: アクセス制御を含むアイデンティティを削除します
ルート詳細:
- Method:
DELETE - Path:
/identities/:identityId - Authentication: 必須(Bearerトークン)
Blocks: deleteIdentity, deleteIdentityTerminator
Validators: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.deleteIdentityRoute);
lockIdentityRoute
POST /identities/:identityId/lock を介してアイデンティティをロックします。
目的: 管理者アクセス制御を含むセキュリティ目的でアイデンティティをロックします。
ルート詳細:
- Method:
POST - Path:
/identities/:identityId/lock - Authentication: 必須(Bearerトークン)
Blocks: buildLockIdentityPayload, updateIdentity, orThrow
Validators: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.lockIdentityRoute);
レスポンス (204 No Content):
{}
エラーレスポンス:
401: Unauthorized - 無効または欠落している認証トークン403: Forbidden - ユーザーに管理者権限がない404: Not Found - アイデンティティが存在しない500: Internal Server Error - データベース操作が失敗した
主な機能:
- 認可制御: 管理者ユーザーへのアクセスを制限します
- アトミック操作: MongoDBアトミック更新操作を使用します
- 包括的なエラーハンドリング: 異なる失敗シナリオに対する特定のエラーレスポンス
unlockIdentityRoute
POST /identities/:identityId/unlock を介してロックされたアイデンティティをアンロックします。
目的: 管理者アクセス制御を含む以前にロックされたアイデンティティをアンロックします。
ルート詳細:
- Method:
POST - Path:
/identities/:identityId/unlock - Authentication: 必須(Bearerトークン)
Blocks: buildUnlockIdentityPayload, updateIdentity, orThrow
Validators: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.unlockIdentityRoute);
レスポンス (204 No Content):
{}
エラーレスポンス:
401: Unauthorized - 無効または欠落している認証トークン403: Forbidden - ユーザーに管理者権限がない404: Not Found - アイデンティティが存在しない500: Internal Server Error - データベース操作が失敗した
主な機能:
- 認可制御: 管理者ユーザーへのアクセスを制限します
- アトミック操作: MongoDBアトミック更新操作を使用します
- 包括的なエラーハンドリング: 異なる失敗シナリオに対する特定のエラーレスポンス
🔗 関連ドキュメント
- アイデンティティスキーマ - アイデンティティデータ検証と契約
- アイデンティティブロック - アイデンティティビジネスロジック関数