🛣️ User ルートブロック
User ルートブロックは、Nodeblocks アプリケーションにおけるユーザー管理操作のための事前設定された HTTP エンドポイントを提供します。これらのルートは、ハンドラー、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラーハンドリングを含む完全な API エンドポイントを作成します。
🎯 概要
User ルートブロックは以下を目的として設計されています:
- ユーザー管理操作のための完全な API エンドポイントを提供
- セキュアな操作のためにハンドラーとバリデーターを組み合わせる
- 認証と認可チェックを含む
- 関数型コンポジションのパターンをサポート
- ログとエラーの管理を自動的に処理
📋 ルート構造
各ユーザー ルートは一貫したパターンをたどります:
- HTTP メソッド: 操作タイプを定義 (GET, POST, PATCH, DELETE)
- パス: パラメータ付きのエンドポイント URL を指定
- ハンドラー: ビジネスロジックのための合成関数チェーン
- バリデーター: 認証と認可チェック
🔧 利用可能な User ルート
createUserRoute
新しいユーザーを作成し、作成されたリソースを返します。
目的: ユーザー登録を処理
ルート詳細:
- メソッド:
POST
- パス:
/users
- 認証: 必須 (Bearer トークン)
ハンドラー: createUser
, getUserById
, normalizeAvatarOfOwner
, normalizeUser
, orThrow
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), isSelf
(['params', 'requestBody', 'identityId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.createUserRoute);
getUserRoute
ID によって特定のユーザーを取得します。
目的: アクセスコントロール付きでユーザープロファイルデータを取得
ルート詳細:
- メソッド:
GET
- パス:
/users/:profileId
- 認証: 必須 (Bearer トークン)
ハンドラー: getUserById
, normalizeAvatarOfOwner
, normalizeUser
, orThrow
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.getUserRoute);
findUsersRoute
正規化されたリスト形式ですべてのユーザーを取得します。
Purpose: ページネーションと管理者専用アクセス付きでユーザーをリスト
ルート詳細:
- メソッド:
GET
- パス:
/users
- 認証: 必須 (Bearer トークン)
ハンドラー: findUsers
, normalizeAvatarsOfOwners
, normalizeUsers
, orThrow
バリデーター: isAuthenticated
, checkIdentityType
(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.findUsersRoute);
updateUserRoute
既存のユーザーを更新し、更新されたリソースを返します。
目的: アクセスコントロール付きでユーザーデータを変更
ルート詳細:
- メソッド:
PATCH
- パス:
/users/:profileId
- 認証: 必須 (Bearer トークン)
ハンドラー: getUserById
, updateUser
, getUserById
, deleteAvatarIfReplaced
, normalizeAvatarOfOwner
, normalizeUser
, orThrow
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.updateUserRoute);
deleteUserRoute
ID によってユーザーを削除します。
目的: アクセスコントロール付きでユーザーアカウントを削除
ルート詳細:
- メソッド:
DELETE
- パス:
/users/:profileId
- 認証: 必須 (Bearer トークン)
ハンドラー: deleteUser
, deleteUserTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.deleteUserRoute);
lockUserRoute
アクセスを防止するためにユーザーアカウントをロックします。
目的: ユーザーアカウントアクセスを無効化 (管理者専用)
ルート詳細:
- メソッド:
POST
- パス:
/identities/:identityId/lock
- 認証: 必須 (Bearer トークン)
ハンドラー: lockUser
, lockUserTerminator
バリデーター: isAuthenticated
, checkIdentityType
(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.lockUserRoute);
unlockUserRoute
アクセスを復元するためにユーザーアカウントのロックを解除します。
目的: ユーザーアカウントアクセスを有効化 (管理者専用)
ルート詳細:
- メソッド:
POST
- パス:
/identities/:identityId/unlock
- 認証: 必須 (Bearer トークン)
ハンドラー: unlockUser
, unlockUserTerminator
バリデーター: isAuthenticated
, checkIdentityType
(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.unlockUserRoute);
getAvatarUploadUrlRoute
GET /user-profiles/:profileId/avatar-upload-url を介してアバター画像をアップロードするための署名付き URL を返します。
目的: 自動 UUID ファイル名生成付きでセキュアなアバターファイルアップロードのための事前署名付き URL を生成
ルート詳細:
- メソッド:
GET
- パス:
/user-profiles/:profileId/avatar-upload-url
- 認証: 必須 (Bearer トークン)
ブロック: generateSignedAvatarUploadUrl
, orThrow
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// 機能コンポジションで使用:
export const getAvatarUploadUrlFeature = compose(getAvatarUploadUrlSchema, getAvatarUploadUrlRoute);