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

🔐 認証フィーチャーブロック

認証フィーチャーブロックは、Nodeblocksアプリケーションにおけるユーザー認証操作のための完全な事前構成済み機能を提供します。これらのフィーチャーは、ログイン、登録、メール確認、セッション管理のための即座に使用可能なAPIエンドポイントを作成するために、スキーマ、ルート、ハンドラーを組み合わせます。


🎯 概要

認証フィーチャーブロックは以下を目的として設計されています:

  • ユーザーログインと登録のための完全な認証ワークフローの提供
  • 検証済み認証操作のためのスキーマとルートの組み合わせ
  • セキュリティ対策とトークン管理の自動実装
  • メール確認とアカウント確認フローのサポート
  • ログアウト操作とセッション管理の円滑な処理

📋 フィーチャー構造

各認証フィーチャーは一貫したコンポジションパターンに従います:

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

🔧 利用可能な認証フィーチャー

loginWithCredentialsFeature

認証情報検証による完全なログインとログアウト機能を提供します。

目的: 検証済み認証情報による ユーザー認証と安全なログアウトを処理

コンポジション:

使用方法:

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

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

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

APIエンドポイント:

  • POST /api/auth/login - ユーザー認証
  • POST /api/auth/logout - セッション終了

registerCredentialsFeature

認証情報検証とアカウント作成による ユーザー登録を処理します。

目的: データ検証による新規ユーザー登録を処理

コンポジション:

使用方法:

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

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

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

APIエンドポイント: POST /api/auth/register


emailVerificationFeature

アカウント確認のためのメール確認をユーザーに送信します。

目的: メール確認リクエスト処理を処理

コンポジション:

使用方法:

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

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

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

APIエンドポイント: POST /api/auth/:userId/send-verification-email


confirmEmailFeature

ユーザーアカウント確認のためのメール確認トークンを処理します。

目的: メール確認トークンを検証し、ユーザーアカウントを確認

コンポジション:

使用方法:

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

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

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

APIエンドポイント: POST /api/auth/confirm-email