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

🔐 認証ルートブロック

認証ルートブロックは、Nodeblocksアプリケーションにおけるユーザー認証と認可操作のための事前設定されたHTTPエンドポイントを提供します。これらのルートは、ログイン、登録、トークン管理、メール確認のための完全なAPIエンドポイントを作成するために、ハンドラー、バリデーター、ミドルウェアを組み合わせます。


🎯 概要

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

  • ユーザー認証操作のための完全なAPIエンドポイントの提供
  • 安全な操作のためのハンドラーとバリデーターの組み合わせ
  • 認証と認可チェックの実装
  • 関数コンポジションパターンのサポート
  • ログとエラー管理の自動処理

📋 ルート構造

各認証ルートは一貫したパターンに従います:

  • HTTPメソッド: 操作タイプの定義(GET、POST、PATCH、DELETE)
  • パス: パラメータ付きエンドポイントURLの指定
  • ハンドラー: ビジネスロジックのためのコンポーズド関数チェーン
  • バリデーター: 認証と認可のチェック

🔧 利用可能な認証ルート

registerCredentialsRoute

オプションの招待処理による新規ユーザー認証情報の登録。

目的: 招待受諾をサポートするユーザー登録の処理

ルート詳細:

  • メソッド: POST
  • パス: /auth/register
  • 認証: 不要

ハンドラー:

バリデーター: なし

使用方法:

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

// ExpressアプリでルートをRegistration
app.use('/api', routes.registerCredentialsRoute);

注意: 招待固有の機能については、招待ブロックを参照してください。


loginWithCredentialsRoute

ユーザー認証情報を認証し、アクセス/リフレッシュトークンを生成します。

目的: 認証情報検証によるユーザーログインの処理

ルート詳細:

  • メソッド: POST
  • パス: /auth/login
  • 認証: 不要

ハンドラー: loginWithCredentials, createAccessToken, createRefreshToken, setResponseCookie, loginTerminator

バリデーター: なし

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.loginWithCredentialsRoute);

logoutRoute

セッションとトークンの無効化によるユーザーログアウト。

目的: ユーザーログアウトとセッションクリーンアップの処理

ルート詳細:

  • メソッド: POST
  • パス: /auth/logout
  • 認証: 必要(Bearerトークン)

ハンドラー: logout, logoutTerminator

バリデーター: verifyAuthentication(getBearerTokenInfo)

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.logoutRoute);

refreshTokenRoute

有効なリフレッシュトークンを使用してアクセストークンを更新。

目的: リフレッシュトークンから新しいアクセストークンを生成

ルート詳細:

  • メソッド: POST
  • パス: /auth/token/refresh
  • 認証: 必要(Bearerトークン)

ハンドラー: refreshToken

バリデーター: verifyAuthentication(getBearerTokenInfo)

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.refreshTokenRoute);

checkTokenRoute

アクセストークンを検証し、そのステータスを返します。

目的: トークンの真正性とステータスの検証

ルート詳細:

  • メソッド: POST
  • パス: /auth/token/check
  • 認証: 必要(Bearerトークン)

ハンドラー: checkToken

バリデーター: verifyAuthentication(getBearerTokenInfo)

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.checkTokenRoute);

deleteTokenRoute

システムから認証トークンを削除。

目的: 認証トークンの削除(管理者のみ)

ルート詳細:

  • メソッド: POST
  • パス: /auth/token/delete
  • 認証: 必要(Bearerトークン)

ハンドラー: deleteToken

バリデーター: verifyAuthentication(getBearerTokenInfo), validateResourceAccess(['admin'])

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.deleteTokenRoute);

loginWithOnetimeTokenRoute

ワンタイムトークンを使用してユーザーを認証し、アクセス認証情報を返します。

目的: OTTベースの認証の処理

ルート詳細:

  • メソッド: GET
  • パス: /auth/ott/login
  • 認証: 不要

ハンドラー: loginWithOnetimeToken

バリデーター: verifyAuthentication(getBearerTokenInfo), validateResourceAccess(['admin'])

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.loginWithOnetimeTokenRoute);

generateOnetimeTokenRoute

認証目的のための新しいワンタイムトークンを生成。

目的: 認証のためのOTTの作成(管理者のみ)

ルート詳細:

  • メソッド: POST
  • パス: /auth/ott/generate
  • 認証: 必要(Bearerトークン)

ハンドラー: generateOnetimeToken

バリデーター: verifyAuthentication(getBearerTokenInfo), validateResourceAccess(['admin'])

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.generateOnetimeTokenRoute);

restoreOnetimeTokenRoute

以前に無効化されたワンタイムトークンを復元。

目的: 無効化されたOTTの再有効化(管理者のみ)

ルート詳細:

  • メソッド: POST
  • パス: /auth/ott/restore
  • 認証: 必要(Bearerトークン)

ハンドラー: restoreOnetimeToken

バリデーター: verifyAuthentication(getBearerTokenInfo), validateResourceAccess(['admin'])

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.restoreOnetimeTokenRoute);

invalidateOnetimeTokenRoute

既存のワンタイムトークンを無効化。

目的: アクティブなOTTの無効化(管理者のみ)

ルート詳細:

  • メソッド: POST
  • パス: /auth/ott/invalidate
  • 認証: 必要(Bearerトークン)

ハンドラー: invalidateOnetimeToken

バリデーター: verifyAuthentication(getBearerTokenInfo), validateResourceAccess(['admin'])

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.invalidateOnetimeTokenRoute);

sendVerificationEmailRoute

ユーザーに確認メールを送信。

目的: メール確認プロセスのトリガー

ルート詳細:

  • メソッド: POST
  • パス: /auth/:userId/send-verification-email
  • 認証: 必要(Bearerトークン)

ハンドラー: sendVerificationEmail, sendVerificationEmailTerminator

バリデーター: verifyAuthentication(getBearerTokenInfo), validateResourceAccess(['admin', 'self'])

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.sendVerificationEmailRoute);

confirmEmailRoute

確認トークンを使用してユーザーのメールアドレスを確認。

目的: メール確認トークンの処理

ルート詳細:

  • メソッド: POST
  • パス: /auth/confirm-email
  • 認証: 不要

ハンドラー: buildCheckConfirmEmailTokenPayload, checkToken, confirmEmail, confirmEmailTerminator

バリデーター: なし

使用方法:

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

// Expressアプリでルートを登録
app.use('/api', routes.confirmEmailRoute);