メインコンテンツまでスキップ
バージョン: 0.13.0 (Previous)

⚙️ Invitation handlers

Invitation handler はルートパイプライン関数であり、Express ミドルウェアではありません。paramscontext から RouteHandlerPayload の値を読み込み、成功した値を context.data にマージするか、成功した Result を HTTP 応答記述子でターミネートします。

目録

ハンドラーパイプラインの役割入力 / コンテキスト結果 / 動作 / エラールートでの使用
INVITATION_TARGET定数N/A正確に 'invitation' トークンターゲット。registerCredentialsRoute
INVITATION_STATUS_PENDING定数N/A正確に 'pending' デフォルトステータス。createInvitationRouteregisterCredentialsRoute
INVITATION_STATUS_ACCEPTED定数N/A正確に 'accepted' デフォルトステータス。registerCredentialsRoute
createInvitationハンドラーrequestBodydb.invitations、設定invitationId を書き込み;400 または 500createInvitationRoute
sendInvitationEmailハンドラー招待、トークン、メール設定/サービス配信フラグを書き込み;400 または 500createInvitationRoute
createInvitationTerminatorターミネーター招待 ID、配信フラグ{ invitationId, statusCode: 201 } を返します;データ欠落は 500createInvitationRoute
findInvitationsハンドラーrequestQuerydb.invitationsinvitations を書き込み;クエリ失敗で 500findInvitationsRoute
normalizeInvitationsListTerminatorターミネーターinvitations またはページネーションリスト各招待から _id を削除;ページネーションメタデータを保持。findInvitationsRoute
buildCheckInvitationTokenPayloadハンドラーパイプラインペイロード招待トークンターゲットを書き込み。registerCredentialsRoute
getInvitationIdFromTokenInfoハンドラーtokenInfo.invitationId招待 ID を書き込み;欠落時は 400registerCredentialsRoute
getInvitationByIdハンドラー招待 ID、db.invitations招待を書き込み;400404、または 500createInvitationRoutegetInvitationByIdRouteregisterCredentialsRoute
normalizeInvitationTerminatorターミネーターcontext.data.invitation_id を削除し招待を返します;欠落時は 404getInvitationByIdRoute
verifyInvitationPayloadハンドラー招待 ID、トークン情報有効性フラグを書き込み;不一致で 400カスタム合成のみ
isPendingInvitationハンドラー招待、ステータス設定保留中フラグを書き込み;保留中でない場合 400registerCredentialsRoute
buildAcceptInvitationPayloadハンドラーステータス設定受け入れ更新ペイロードを書き込み。registerCredentialsRoute
updateInvitationハンドラー招待 ID、更新ペイロード、db.invitations招待 ID を書き込み;400404、または 500registerCredentialsRoute
deleteInvitationハンドラー招待 ID、db.invitations削除結果を書き込み;400404、または 500deleteInvitationRoute
deleteInvitationTerminatorターミネーター削除結果{ statusCode: 204 } を返します;結果欠落は 500deleteInvitationRoute
buildInvitationOnetimeTokenPayloadハンドラー招待 ID、トークン設定ターゲットとトークンデータを書き込み;失敗で 400createInvitationRoute

詳細

INVITATION_TARGET

実装

'invitation'buildCheckInvitationTokenPayload によって書き込まれ、buildInvitationOnetimeTokenPayload のフォールバックトークンターゲットです。したがって、前者を通じて registerCredentialsRoute に、後者を通じて createInvitationRoute に到達します。

INVITATION_STATUS_PENDING

実装

'pending'createInvitationisPendingInvitation における configuration.invitation.status.pending のフォールバックです。これらのハンドラーはそれぞれ createInvitationRouteregisterCredentialsRoute で使用されます。

INVITATION_STATUS_ACCEPTED

実装

'accepted'buildAcceptInvitationPayload における configuration.invitation.status.accepted のフォールバックです。registerCredentialsRoute で使用されます。

createInvitation

実装

params.requestBodycontext.configuration.invitation.status.pending を読み込み、基本エンティティを作成し、context.db.invitations に挿入して context.data.invitationId を書き込みます。空のボディは 400 Request body is requiredinsertedId の欠落は 400 Failed to create invitation;データベース例外は同じメッセージで 500 です。createInvitationRoute で使用されます。

sendInvitationEmail

実装

context.data.invitationcontext.data.tokencontext.configuration.invitationcontext.mailService を読み込み、招待メールを送信して context.data.invitationEmailSent として sendMail() の結果を書き込みます。招待/トークンの欠落は 400 Invitation and one-time token are required;無効化/不完全な設定は 500 Invitation email configuration is incomplete or disabled;配信失敗は 500 Failed to send invitation email です。createInvitationRoute で使用されます。

createInvitationTerminator

実装

エラー結果をスローし、context.data.invitationIdcontext.data.invitationEmailSent を読み込み、{ data: { invitationId }, statusCode: 201 } を返します。欠落、または偽と評価される値は 500 Unknown error creating invitation を引き起こします。createInvitationRoute をターミネートします。

findInvitations

実装

params.requestQuery を読み込み、context.db.invitations.find(filter || {}) をクエリし、カーソルを toArray() で変換して context.data.invitations を書き込みます。データベース例外は 500 Failed to find invitations です。findInvitationsRoute で使用されます。

normalizeInvitationsListTerminator

実装

前のエラー結果をスローし、context.data.invitations を読み込み、各招待から _id を削除し、配列または { data, metadata: { pagination: context.data.invitations.metadata } } を返します。findInvitationsRoute をターミネートします。

buildCheckInvitationTokenPayload

実装

context.data.checkToken.targetINVITATION_TARGET として確実に書き込みます。registerCredentialsRoute で使用されます。

getInvitationIdFromTokenInfo

実装

context.data.tokenInfo.invitationId を読み込み、context.data.invitationId を書き込み、または欠落時は 400 Invitation ID is required を返します。registerCredentialsRoute で使用されます。

getInvitationById

実装

params.requestParams.invitationId より前に context.data.invitationId を読み込み、context.db.invitations.findOne({ id: { $eq: String(invitationId) } }) をクエリして context.data.invitation を書き込みます。ID の欠落は 400 Invitation ID is required、一致なしは 404 Invitation not found、データベース失敗は 500 Failed to get invitation by id です。createInvitationRoutegetInvitationByIdRouteregisterCredentialsRoute で使用されます。

normalizeInvitationTerminator

実装

前のエラー結果をスローし、context.data.invitation を読み込み、欠落時は 404 Invitation not found を返し、そうでなければ _id を削除して公開された招待を返します。getInvitationByIdRoute をターミネートします。

verifyInvitationPayload

実装

context.data.invitationId または params.requestParams.invitationIdcontext.data.tokenInfo.invitationId を読み込み;一致する値は isValidInvitationPayload: true を書き込み、そうでなければ 400 Invalid invitation payload を返します。カスタム合成のみ;エクスポートされたルートはこれを合成していません。

isPendingInvitation

実装

INVITATION_STATUS_PENDING をフォールバックとして context.data.invitationcontext.configuration.invitation.status.pending を読み込み;一致は isPendingInvitation: true を書き込みます。招待の欠落は 400 Invitation is required;保留中でないステータスは 400 Invitation is not pending です。registerCredentialsRoute で使用されます。

buildAcceptInvitationPayload

実装

INVITATION_STATUS_ACCEPTED をフォールバックとして context.configuration.invitation.status.accepted を読み込み、context.data.invitationupdateBaseEntity({ acceptedAt: new Date().toISOString(), status }) として書き込みます。エラーブランチはありません。registerCredentialsRoute で使用されます。

updateInvitation

実装

ID をデータからパスへ、招待データをデータからボディへ読み込み;updateBaseEntity を適用し、文字列 id で更新して context.data.invitationId を書き込みます。ID の欠落は 400 Invitation ID is required;ペイロードの欠落/空は 400 Invitation Payload is required;一致なしは 404 Invitation not found;変更なしまたはデータベース失敗は 400/500 Failed to update invitation です。registerCredentialsRoute で使用されます。

deleteInvitation

実装

ID をデータからパスへ読み込み、文字列 id で削除して context.data.deleteInvitation を書き込みます。ID の欠落は 400 Invitation ID is required;削除なしは 404 Invitation not found;データベース失敗は 500 Failed to delete invitation です。deleteInvitationRoute で使用されます。

deleteInvitationTerminator

実装

前のエラー結果をスローし、context.data.deleteInvitation を要求し、{ statusCode: 204 } を返します;データ欠落は 500 Unknown error deleting invitation です。deleteInvitationRoute をターミネートします。

buildInvitationOnetimeTokenPayload

実装

context.data.invitationIdcontext.configuration.invitation.target を読み込み;context.data.targetcontext.data.tokenData: { invitationId } を書き込み、INVITATION_TARGET をフォールバックとします。ID の欠落は 400 Invitation ID is required です。createInvitationRoute で使用されます。