🔐 認証ルートブロック
認証ルートブロックは、Nodeblocksアプリケーションにおけるユーザー認証と認可操作のための事前設定されたHTTPエンドポイントを提供します。これらのルートは、ログイン、登録、トークン管理、メール確認のための完全なAPIエンドポイントを作成するために、ハンドラー、バリデーター、ミドルウェアを組み合わせます。
🎯 概要
認証ルートブロックは以下を目的として設計されています:
- ユーザー認証操作のための完全なAPIエンドポイントの提供
- 安全な操作のためのハンドラーとバリデーターの組み合わせ
- 認証と認可チェックの実装
- 関数コンポジションパターンのサポート
- ログとエラー管理の自動処理
📋 ルート構造
各認証ルートは一貫したパターンに従います:
- HTTPメソッド: 操作タイプの定義(GET、POST、PATCH、DELETE)
- パス: パラメータ付きエンドポイントURLの指定
- ハンドラー: ビジネスロジックのためのコンポーズド関数チェーン
- バリデーター: 認証と認可のチェック
🔧 利用可能な認証ルート
registerCredentialsRoute
オプションの招待処理による新規ユーザー認証情報の登録。
目的: 招待受諾をサポートするユーザー登録の処理
ルート詳細:
- メソッド:
POST
- パス:
/auth/register
- 認証: 不要
ハンドラー:
- 招待トークン付き:
buildCheckInvitationTokenPayload
,checkToken
,getInvitationIdFromTokenInfo
,getInvitationById
,isPendingInvitation
,registerCredentials
,buildAcceptInvitationPayload
,updateInvitation
- トークンなし:
registerCredentials
- 最終:
registerTerminator
バリデーター: なし
使用方法:
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);