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

🚀 User 機能ブロック

User 機能ブロックは、Nodeblocks アプリケーションにおけるユーザー管理操作のための完全な事前構成された機能を提供します。これらの機能はスキーマ、ルート、ハンドラーを組み合わせて、適切な検証、認証、エラーハンドリングを含むすぐに使用可能な API エンドポイントを作成します。


🎯 概要

User 機能ブロックは以下を目的として設計されています:

  • ユーザー管理操作のための完全な API エンドポイントを提供
  • 検証された操作のためにスキーマとルートを組み合わせる
  • 認証と認可チェックを自動的に含む
  • 関数型コンポジションのパターンをサポート
  • ログとエラーの管理をシームレスに処理

📋 機能構造

各ユーザー機能は一貫したコンポジションパターンをたどります:

  • スキーマ: 入力データとパラメータを検証
  • ルート: ハンドラー付きの HTTP エンドポイントを提供
  • コンポジション: compose 関数を使用してスキーマとルートを組み合わせる

🔧 利用可能な User 機能

createUserFeature

検証とルーティング付きで新しいユーザーアカウントを作成します。

目的: 完全な検証付きでユーザー登録を処理

コンポジション:

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.createUserFeature));

// データベース設定付き
app.use('/api', defService(partial(features.createUserFeature, [{ dataStores: db }])));

API エンドポイント: POST /api/users


getUserFeatures

アクセスコントロール付きで個別のユーザーデータを取得します。

目的: 適切な認可付きでユーザープロファイルデータを取得

コンポジション:

  • スキーマ: getUserSchema - パスパラメータを検証
  • ルート: getUserRoute - 取得ハンドラー付き GET /users/:profileId

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.getUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.getUserFeatures, [{ dataStores: db }])));

API エンドポイント: GET /api/users/:profileId


findUsersFeatures

フィルタリングとページネーション付きでユーザーを検索およびリストします。

目的: 検索機能付きでユーザーリストを提供

コンポジション:

  • スキーマ: findUsersSchema - フィルタリングのためのクエリパラメータを検証
  • ルート: findUsersRoute - 検索とページネーション付き GET /users

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.findUsersFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.findUsersFeatures, [{ dataStores: db }])));

API エンドポイント: GET /api/users


editUserFeatures

検証とアクセスコントロール付きでユーザープロファイルデータを更新します。

目的: 適切な認可付きでユーザーデータを変更

コンポジション:

  • スキーマ: updateUserSchema - 部分的なユーザー属性を検証
  • ルート: updateUserRoute - 更新ハンドラー付き PATCH /users/:profileId

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.editUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.editUserFeatures, [{ dataStores: db }])));

API エンドポイント: PATCH /api/users/:profileId


deleteUserFeatures

適切な認可付きでユーザーアカウントを削除します。

目的: アクセスコントロール付きでユーザーアカウントを削除

コンポジション:

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.deleteUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.deleteUserFeatures, [{ dataStores: db }])));

API エンドポイント: DELETE /api/users/:profileId


lockUserFeatures

アクセスを防止するためにユーザーアカウントをロックします (管理者専用)。

目的: セキュリティのためにユーザーアカウントアクセスを無効化

コンポジション:

  • スキーマ: lockUserSchema - パスパラメータを検証
  • ルート: lockUserRoute - ロックハンドラー付き POST /identities/:identityId/lock

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.lockUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.lockUserFeatures, [{ dataStores: db }])));

API エンドポイント: POST /api/identities/:identityId/lock


unlockUserFeatures

アクセスを復元するためにユーザーアカウントのロックを解除します (管理者専用)。

Purpose: ロック後にユーザーアカウントアクセスを有効化

コンポジション:

  • スキーマ: unlockUserSchema - パスパラメータを検証
  • ルート: unlockUserRoute - アンロックハンドラー付き POST /identities/:identityId/unlock

使用法:

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

// 直接使用 (ハンドラーに dataStores が必要)
app.use('/api', defService(features.unlockUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.unlockUserFeatures, [{ dataStores: db }])));

API エンドポイント: POST /api/identities/:identityId/unlock


getAvatarUploadUrlFeature

スキーマ検証とルーティング付きのユーザーアバターアップロード URL 生成機能。

目的: 自動 UUID ファイル名生成付きでセキュアなアバターファイルアップロードのための事前署名付き URL を生成

コンポジション:

使用法:

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

// 直接使用 (ハンドラーに fileStorageDriver が必要)
app.use('/api', defService(features.getAvatarUploadUrlFeature));

// 設定でファイルストレージサービスを使用:
app.use('/api', defService(partial(features.getAvatarUploadUrlFeature, [{ configuration: { fileStorageDriver } }])));

API エンドポイント: GET /api/user-profiles/:profileId/avatar-upload-url