⚙️ Authenticationハンドラー
AuthenticationハンドラーはExpressミドルウェアではなく、ルートパイプライン関数です。paramsとcontextからRouteHandlerPayloadの値を読み取り、成功した値をcontext.dataに結合するか、成功したResultをHTTPレスポンス記述子で終了します。
インベントリ
| ハンドラー | パイプラインでの役割 | 入力 / コンテキスト | 結果 / 動作 / エラー | ルートでの使用先 |
|---|---|---|---|---|
TARGET_CONFIRM_EMAIL | 定数 | なし | 正確に 'confirm-email' のターゲット。 | カスタム合成のみ |
TARGET_CHANGE_EMAIL | 定数 | なし | 正確に 'change-email' のターゲット。 | カスタム合成のみ |
loginTerminator | 非推奨のターミネーター | context.data.identity、アクセストークン、リフレッシュトークン | レガシーなBearerログインボディを返すか、前のエラーをスローする。 | カスタム合成のみ |
setResponseCookie | 非推奨のハンドラー | レスポンス、トークン、設定 | アクセス/リフレッシュクッキーを設定; レスポンスがない場合は 500。 | loginWithCredentialsRoute、verifyMfaCodeRoute、refreshTokenRoute、loginWithOnetimeTokenRoute |
loginWithCredentials | 非推奨のハンドラー | クレデンシャル、アイデンティティ、エラー設定 | identity を書き込み; ロックされたまたは間違ったクレデンシャルは 401。 | loginWithCredentialsRoute |
createAccessToken | 非推奨のハンドラー | リクエストセキュリティデータ、アイデンティティID、アクセストークン設定 | accessToken を書き込み; 生成失敗は 500。 | loginWithCredentialsRoute、verifyMfaCodeRoute、loginWithOnetimeTokenRoute |
createRefreshToken | 非推奨のハンドラー | リクエストセキュリティデータ、アイデンティティID、リフレッシュトークン設定 | リフレッシュレコードを保存し refreshToken を書き込み; 生成失敗は 500。 | loginWithCredentialsRoute、verifyMfaCodeRoute、loginWithOnetimeTokenRoute |
logoutTerminator | 非推奨のターミネーター | 前パイプラインの結果 | {statusCode: 204} を返すか、前のエラーをスローする。 | logoutRoute |
logout | 非推奨のハンドラー | リクエスト/レスポンス、選択された認証器、トークン設定、アイデンティティ | クッキーを消去し提示されたリフレッシュトークンを無効化する。 | logoutRoute |
registerTerminator | 非推奨のターミネーター | 登録済みアイデンティティデータ | {email, id, statusCode: 201} を返すか、スローする。 | registerCredentialsRoute |
registerCredentials | 非推奨のハンドラー | 登録/招待メール、パスワード、アイデンティティ | identity を作成して書き込み; 400、422、または 500 のエラーを返す。 | registerCredentialsRoute |
refreshToken | 非推奨のハンドラー | リクエスト、シークレット、トークン有効期間、アイデンティティ | 古いリフレッシュレコードを取り消し、ローテートされたトークンペアを書き込む。 | refreshTokenRoute |
checkToken | 非推奨のハンドラー | ボディトークン、オプションのターゲット、リクエストセキュリティデータ、ワンタイムトークンストア | identityId または tokenInfo を書き込み; ワンタイムトークンを使用する可能性がある。 | registerCredentialsRoute、confirmEmailRoute |
deleteToken | 非推奨のハンドラー | ベアラー/Cookie トークンと要求されたアイデンティティ ID | トランスポートと所有者を検査した後、アイデンティティ/トークンレコードを論理削除します。 | カスタム合成のみ |
loginWithOnetimeToken | 非推奨のハンドラー | 本文のトークン、シークレット、アイデンティティ、ワンタイムトークンストア | ログイン用ターゲットのトークンを消費し、identity を書き込みます。 | loginWithOnetimeTokenRoute |
generateOnetimeToken | 非推奨のハンドラー | トークンデータ/ターゲット/フィンガープリント、リクエスト、シークレット、ストア | token を保存して書き込みます。失敗時は 400 または 500 を返します。 | generateOnetimeTokenRoute |
restoreOnetimeToken | ハンドラー | 本文のトークン、シークレット、ワンタイムトークンストア | ステートフルトークンを要求し、invalid を解除して token を書き込みます。 | restoreOnetimeTokenRoute |
invalidateOnetimeToken | ハンドラー | トークン/フィンガープリント、シークレット、ワンタイムトークンストア | ステートフルトークンを要求し、invalid を設定して token を書き込みます。 | invalidateOnetimeTokenRoute |
confirmEmailTerminator | ターミネーター | context.data.confirmEmail | {statusCode: 204} を返します。確認データがない場合は 500 です。 | confirmEmailRoute |
confirmEmail | 非推奨のハンドラー | context.data.tokenInfo.identityId、アイデンティティ | emailVerified: true を設定し、confirmEmail を書き込みます。 | confirmEmailRoute |
buildCheckConfirmEmailTokenPayload | ハンドラー | パイプラインペイロード | checkToken.target: 'confirm-email' を書き込みます。 | confirmEmailRoute |
sendVerificationEmailTerminator | 非推奨のターミネーター | 送信結果と生成済みトークン | {statusCode: 204} を返します。データがない場合は 500 です。 | sendVerificationEmailRoute |
sendVerificationEmail | 非推奨のハンドラー | アイデンティティ ID、検証/メール設定、リクエスト、ストア | トークンを生成、保存、メール送信し、送信結果とトークンを書き込みます。 | sendVerificationEmailRoute |
詳細
TARGET_CONFIRM_EMAIL
実装
正確に 'confirm-email' のターゲットを返す定数です。カスタム合成でのみ使用されます。
TARGET_CHANGE_EMAIL
実装
正確に 'change-email' のターゲットを返す定数です。カスタム合成でのみ使用されます。
loginTerminator
実装
非推奨のターミネーターです。エラー結果をスローし、成功時は正確に {statusCode: 204} を返します。
setResponseCookie
実装
非推奨の非同期ハンドラーです。デフォルト設定を使用してアクセストークンとリフレッシュトークンの両方のクッキーを設定し、maxAge や expires は使用しません; レスポンスがない場合は 500 を返します。loginWithCredentialsRoute、verifyMfaCodeRoute、refreshTokenRoute、loginWithOnetimeTokenRoute で使用されます。
loginWithCredentials
実装
非推奨の非同期ハンドラーです。クレデンシャルを認証しアイデンティティに書き込みます; ロックされたまたは間違ったクレデンシャルは 401 を返します。loginWithCredentialsRoute で使用されます。
createAccessToken
実装
非推奨の非同期ハンドラーです。リクエストセキュリティデータを基にアクセストークンを生成し、アイデンティティIDとアクセストークン設定を使用します。生成失敗は 500 です。loginWithCredentialsRoute、verifyMfaCodeRoute、loginWithOnetimeTokenRoute で使用されます。
createRefreshToken
実装
非推奨の非同期ハンドラーです。アイデンティティID、リフレッシュトークン設定、およびリクエストセキュリティデータに基づいてリフレッシュレコードを保存し refreshToken を書き込みます。生成失敗は 500 です。loginWithCredentialsRoute、verifyMfaCodeRoute、loginWithOnetimeTokenRoute で使用されます。
logoutTerminator
実装
非推奨のターミネーターです。エラー結果をスローし、成功時は正確に {statusCode: 204} を返します。logoutRoute で最終処理として使用されます。
logout
実装
非推奨の非同期ハンドラーです。デフォルト設定で両方のセッションクッキーを消去し、maxAge や expires は使用しません。context.authenticate または Bearer フォールバックを呼び出し、リクエストからリフレッシュトークンを解決します。リフレッシュトークンがない場合は冪等性の成功とみなし、アクセスとリフレッシュのアイデンティティの不整合は 401 です。一致するJTIレコードを削除し、すでに削除されている場合は成功扱い、取り消しを適用できない場合は 500 を返します。logoutRoute で使用されます。
registerTerminator
実装
非推奨のターミネーターです。エラー結果をスローし、それ以外は context.data.email と ID を読み取って {email, id, statusCode: 201} を返します。registerCredentialsRoute で登録後に使用されます。
registerCredentials
実装
非推奨の非同期ハンドラーです。メールは context.data.invitation.email またはリクエストボディから取得され、パスワードはボディから取得されます。欠落値は 400、既存アイデンティティは 422、ルックアップ失敗は 500、挿入IDの欠落は 400、ハッシュ化/挿入失敗は 500 です。成功時は基本アイデンティティ(attempts: 0、locked: false、ハッシュ化されたパスワード)を作成し {identity: {email, id}} を書き込みます。registerCredentialsRoute で使用されます。
refreshToken
実装
非推奨の非同期ハンドラーです。リクエスト検証データを導出し、Bearerボディまたはクッキーのリフレッシュトークンを解決し、identityId と JTI を要求します。不足/再利用/削除済みレコードは 401 で拒否され、トークンが見つからない場合は 422 を返します。古いレコードを1つだけ取り消し(変更されていない場合は 400)、交換レコードを挿入(スロー時は 500)、両方のトークンを生成し context.data.accessToken と refreshToken を書き込みます。refreshTokenRoute で使用されます。
checkToken
実装
非推奨のハンドラーです(同名ブロックとは異なります)。params.requestBody.token、context.data.checkToken.target、リクエストホスト/IP/ユーザーエージェント/フィンガープリント、シークレット、および db.onetimetokens を読み取ります。有効なアクセストークンはIPチェックを強制したセキュリティチェックをパスし identityId を書き込みます。一致するアクティブなワンタイムトークンは無効化され、そのデータが tokenInfo として書き込まれます。検証/セキュリティ/ターゲットの失敗は 400、最終バリデーション失敗は 401、データベース呼び出しはローカルではキャッチされません。招待ブランチの registerCredentialsRoute と confirmEmailRoute で使用されます; checkTokenRoute は代わりにブロックエクスポートを呼び出します。
deleteToken
実装
非推奨のカスタム合成ハンドラーです。クッキーとBearerの取得を独立して試行し、少なくとも1つを必要とします (401)、両者が存在する場合は両者の一致を要求します (422)。要求されたアイデンティティはパイプラインデータ、リクエストボディ、またはクエリから取得されます (400 が欠落時)。アプリトークンは要求されたアイデンティティのレコードを削除可能; ユーザートークンは自身のもののみ削除可能です (401)。新しいデータを結合せず、認証済みルートの消費者は持っていません。
loginWithOnetimeToken
実装
非推奨の非同期ハンドラーです。ボディトークンを読み取り、'onetime' トークンを検証し、アクティブな保存済みレコードを要求し、無効化し、保存されたトークンを再検証し、ターゲット 'login' を要求し、参照されるアイデンティティを読み込みます。間違った型/ターゲットまたは欠落/無効な保存トークンは 403、アイデンティティの欠落は 404、スローされた操作はすべて 401 に折りたたまれます。成功時は context.data.identity を書き込みます。loginWithOnetimeTokenRoute で使用されます。
generateOnetimeToken
実装
非推奨の非同期ハンドラーです。フィンガープリント、ターゲット、トークンデータは context.data、直接 context、リクエストボディから解決されます; tokenData はオブジェクトである必要があります (400)。リクエストから検証データを構築し、トークンを生成し、db.onetimetokens に {invalid: false, token} を保存し、context.data.token を書き込みます。無効なトークンまたはスローされた挿入は 500、挿入IDの欠落は 400 です。generateOnetimeTokenRoute で使用されます。
restoreOnetimeToken
実装
非推奨の非同期ハンドラーです。params.requestBody.token を読み取り、設定されたシークレットで復号し、復号済みの stateful フラグを要求します。復号失敗は 401、stateful ではないトークンは 422、スローされたデータベース更新は 500 です。一致するすべての保存済みトークンを invalid: false に設定し context.data.token を書き込み; マッチゼロでも成功扱いとなります。restoreOnetimeTokenRoute で使用されます。
invalidateOnetimeToken
実装
非推奨の非同期ハンドラーです。トークンとフィンガープリントはパイプラインデータ、直接コンテキスト、リクエストボディから解決されます。欠落値、復号失敗、またはstateful ではないトークンのいずれかが 422 です; スローされた更新は 500 です。一致するすべての保存済みトークンを invalid: true に設定し context.data.token を書き込み; マッチゼロでも成功扱いとなります。invalidateOnetimeTokenRoute で使用されます。
confirmEmailTerminator
実装
confirmEmailRoute 用のターミネーターです。前のエラーをスローし、真値の context.data.confirmEmail を要求し、その結果がない場合は NodeblocksError(500) をスローし、それ以外は正確に {statusCode: 204} を返します。
confirmEmail
実装
非推奨の非同期ハンドラーです。context.data.tokenInfo.identityId を読み取り、文字列を要求 (403) し、一致するアイデンティティに emailVerified: true を設定します。マッチなしは 404、変更なしは 409、スローされた更新は 500 です。成功時は更新結果を context.data.confirmEmail として書き込みます。confirmEmailRoute で使用されます。
buildCheckConfirmEmailTokenPayload
実装
失敗しない非同期ハンドラーです: ハンドラーレベルの定数として context.data.checkToken.target に TARGET_CONFIRM_EMAIL を書き込み、それ以外はペイロードを保持します。confirmEmailRoute でハンドラー checkToken の前に配置されます。
sendVerificationEmailTerminator
実装
sendVerificationEmailRoute 用の非推奨のターミネーターです。前のエラーをスローし、真値の context.data.sendVerificationEmail と context.data.token の両方を要求し、いずれかが欠落している場合は NodeblocksError(500) をスローし、それ以外は {statusCode: 204} を返します。
sendVerificationEmail
実装
非推奨の非同期ハンドラーです。アイデンティティIDは context.data.identityId、パスパラメータ、context.data.identity.id から解決されます。機能の有効化、メールサービス、ボディ/件名/URL設定を要求 (400) し、アイデンティティを読み込み (404) メールを確認 (400) し、リクエスト対応の確認トークン検証データを構築し、トークンを生成して保存し、メッセージを送信します。トークン生成失敗は 501; 配信不成功またはキャッチされた操作はすべて 500 です。成功時は context.data.sendVerificationEmail と token を書き込みます。sendVerificationEmailRoute で使用されます。