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

🔐 認証機能ブロック

認証機能ブロックは、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/:identityId/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


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

パスワード復旧のための、スキーマ検証とルーティングを備えたパスワードリセットメール機能。

目的: パスワードリセットメールの生成と送信を処理します

構成:

使用例:

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

ユーザーパスワードをリセットするための、スキーマ検証とルーティングを備えた完全なパスワードリセット機能。

目的: トークン検証とパスワード更新を伴うパスワードリセット完了を処理します

構成:

使用例:

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