🔐 認証機能ブロック
認証機能ブロックは、Nodeblocks アプリケーションにおけるユーザー認証操作のための、あらかじめ構成された完全な機能を提供します。これらの機能はスキーマ、ルート、ハンドラーを組み合わせ、ログイン、登録、メール認証、セッション管理のためのすぐに使える API エンドポイントを作成します。
🎯 概要
認証機能ブロックは次のことを目的として設計されています:
- ユーザーログインと登録のための完全な認証ワークフローを提供する
- 検証済みの認証処理のためにスキーマとルートを組み合わせる
- セキュリティ対策とトークン管理を自動的に含める
- メール認証とアカウント確認フローをサポートする
- セッション管理とログアウト処理をシームレスに扱う
📋 機能の構成
各認証機能は一貫した構成パターンに従います:
- スキーマ: 認証の入力データとパラメータを検証します
- ルート: 認証ハンドラーを備えた HTTP エンドポイントを提供します
- 合成:
compose
関数を用いてスキーマとルートを組み合わせます
🔧 利用可能な認証機能
loginWithCredentialsFeature
資格情報の検証を伴う完全なログインおよびログアウト機能を提供します。
目的: 検証済みの資格情報によるユーザー認証と安全なログアウトを処理します
構成:
- スキーマ:
loginWithCredentialsSchema
- ログイン資格情報を検証します - ルート:
loginWithCredentialsRoute
- 認証ハンドラーを伴う POST/auth/login
- ルート:
logoutRoute
- セッション終了を行う POST/auth/logout
使用例:
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
資格情報の検証とアカウント作成を伴うユーザー登録を処理します。
目的: データ検証を伴う新規ユーザー登録を処理します
構成:
- スキーマ:
registerCredentialsSchema
- 登録データを検証します - ルート:
registerCredentialsRoute
- アカウント作成を行う POST/auth/register
使用例:
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
アカウント確認のためにユーザーへ認証メールを送信します。
目的: メール認証リクエストの処理を行います
構成:
- スキーマ:
sendVerificationEmailSchema
- デバイスセキュリティのための任意のフィンガープリントを検証します - ルート:
sendVerificationEmailRoute
- メール送信を行う POST/auth/:identityId/send-verification-email
使用例:
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/:identityId/send-verification-email
confirmEmailFeature
メール確認トークンを処理してユーザーアカウントを検証します。
目的: メール認証トークンを検証し、ユーザーアカウントを確認します
構成:
- スキーマ:
confirmEmailSchema
- メールの認証トークンを検証します - ルート:
confirmEmailRoute
- トークン処理を行う POST/auth/confirm-email
使用例:
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
changeEmailFeature
ユーザーのメールアドレス更新のための、スキーマ検証とルーティングを備えたメール変更機能。
目的: 検証を伴うメール変更の開始を処理します
構成:
- スキーマ:
changeEmailSchema
- identityId と新しいメールを検証します(ハンドラー内での内部パスワード検証を含む) - ルート:
changeEmailRoute
- メール更新処理を行う PATCH/auth/:identityId/change-email
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.changeEmailFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.changeEmailFeature, [{ dataStores: db }])));
API エンドポイント: PATCH /api/auth/:identityId/change-email
checkTokenFeature
認証チェックのための、スキーマ検証とルーティングを備えたトークン検証機能。
目的: ターゲットコンテキストを伴うトークン検証を処理します
構成:
- スキーマ:
checkTokenSchema
- トークンおよび任意のターゲットパラメータを検証します - ルート:
checkTokenRoute
- トークン検証ハンドラーを伴う POST/auth/token/check
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.checkTokenFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.checkTokenFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/auth/token/check
confirmNewEmailFeature
新しいメールアドレスの認証のためのスキーマ検証を備えたメール確認機能。
目的: メール変更後の新しいメール確認を処理します
構成:
- スキーマ:
confirmNewEmailSchema
- 新しいメールアドレス用の認証トークンを検証します - ルート:
confirmNewEmailRoute
- 新しいメールの確認を行う POST/auth/confirm-new-email
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.confirmNewEmailFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.confirmNewEmailFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/auth/confirm-new-email
sendResetPasswordLinkEmailFeature
パスワード復旧のための、スキーマ検証とルーティングを備えたパスワードリセットメール機能。
目的: パスワードリセットメールの生成と送信を処理します
構成:
- スキーマ:
sendResetPasswordLinkEmailSchema
- パスワードリセット用のメールアドレスを検証します - ルート:
sendResetPasswordLinkEmailRoute
- パスワードリセットメールを送信する POST/auth/send-reset-password-link-email
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.sendResetPasswordLinkEmailFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.sendResetPasswordLinkEmailFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/auth/send-reset-password-link-email
changePasswordFeature
ユーザーパスワードの更新のための、スキーマ検証とルーティングを備えたパスワード変更機能。
目的: 現在のパスワードの検証と新しいパスワードのハッシュ化を伴うパスワード変更を処理します
構成:
- スキーマ:
changePasswordSchema
- 現在のパスワードと新しいパスワードを検証します - ルート:
changePasswordRoute
- パスワード更新処理を行う PATCH/auth/:identityId/change-password
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.changePasswordFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.changePasswordFeature, [{ dataStores: db }])));
API エンドポイント: PATCH /api/auth/:identityId/change-password
activateFeature
ユーザーアカウントを有効化するための、スキーマ検証およびルーティングを備えたアカウント有効化機能。
目的: メール認証とアイデンティティ状態の更新を伴うアカウントの有効化を処理します
構成:
- スキーマ:
activateSchema
- アイデンティティ有効化リクエストを検証します(identityId が必要) - ルート:
activateRoute
- アカウント有効化処理を行う POST/auth/activate
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.activateFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.activateFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/auth/activate
deactivateFeature
ユーザーアカウントを無効化するための、スキーマ検証およびルーティングを備えたアカウント無効化機能。
目的: アイデンティティ状態の更新とトークン失効を伴うアカウントの無効化を処理します
構成:
- スキーマ:
deactivateSchema
- 無効化リクエストを検証します - ルート:
deactivateRoute
- アカウント無効化処理を行う POST/auth/deactivate
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.deactivateFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.deactivateFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/auth/deactivate
completePasswordResetFeature
ユーザーパスワードをリセットするための、スキーマ検証とルーティングを備えた完全なパスワードリセット機能。
目的: トークン検証とパスワード更新を伴うパスワードリセット完了を処理します
構成:
- スキーマ:
completePasswordResetSchema
- 新しいパスワードを検証します - ルート:
completePasswordResetRoute
- パスワード更新を行う POST/auth/reset-password
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラー内で dataStores が必要)
app.use('/api', defService(features.completePasswordResetFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.completePasswordResetFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/auth/reset-password