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

🛣️ アイデンティティのルート

アイデンティティのルートはSDKコンポーザーであり、Expressミドルウェアではありません。全てのエンドポイントは最初に isAuthenticated() を実行し、次に checkIdentityType(['admin']) を実行します。

インベントリ

ルートメソッド / プロトコルパススキーマバリデーター成功ステータス
findIdentitiesRouteGET / HTTP/identitiesfindIdentitySchemaisAuthenticated(), checkIdentityType(['admin'])200
getIdentityRouteGET / HTTP/identities/:identityIdgetIdentitySchemaisAuthenticated(), checkIdentityType(['admin'])200
updateIdentityRoutePATCH / HTTP/identities/:identityIdupdateIdentitySchemaisAuthenticated(), checkIdentityType(['admin'])200
deleteIdentityRouteDELETE / HTTP/identities/:identityIddeleteIdentitySchemaisAuthenticated(), checkIdentityType(['admin'])204
lockIdentityRoutePOST / HTTP/identities/:identityId/locklockIdentitySchemaisAuthenticated(), checkIdentityType(['admin'])204
unlockIdentityRoutePOST / HTTP/identities/:identityId/unlockunlockIdentitySchemaisAuthenticated(), checkIdentityType(['admin'])204

詳細

findIdentitiesRoute

実装

エンドポイント: GET /identities

管理者に表示されるアイデンティティをリストします。バリデーターは次の順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])

アクセス: 認証済み管理者;デフォルトのBearerヘッダーまたはcookieモードで accessToken Cookieを使用します。

リクエスト: findIdentitySchema は省略可能なクエリフィールド name (文字列)、page (整数 11000)、および limit (整数 150) を受け付けます。ルートは検証された完全なリクエストクエリを findIdentities に渡します。

パイプライン: findIdentitiesnormalizeIdentitiesWithoutPasswordorThrow

成功: デフォルトの 200 JSON配列。各アイデンティティは password と MongoDB _id を削除するように正規化されます。

失敗: 認証と管理者検証はリンクされた共有バリデーターの動作を使用します。findIdentities500Failed to find identities を生成する場合があります。

完全なソースを表示
export const findIdentitiesRoute = withRoute({
handler: compose(
applyPayloadArgs(
findIdentities,
[
['context', 'db', 'identities'],
['params', 'requestQuery'],
],
'rawIdentities',
),
flatMapAsync(
applyPayloadArgs(normalizeIdentitiesWithoutPassword, [['context', 'data', 'rawIdentities']], 'identity'),
),
lift(orThrow([], [['context', 'data', 'identity']])),
),
method: 'GET',
path: '/identities',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

getIdentityRoute

実装

エンドポイント: GET /identities/:identityId

管理者に表示されるアイデンティティを1つ取得します。バリデーターは次の順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])

アクセス: 認証済み管理者;デフォルトのBearerヘッダーまたはcookieモードで accessToken Cookieを使用します。

リクエスト: getIdentitySchema は文字列のパスパラメーター identityId を必須とします。

パイプライン: getIdentityByIdnormalizeIdentityorThrow

成功: password と MongoDB _id を削除したデフォルトの 200 JSONアイデンティティ。

失敗: 認証と管理者検証はリンクされた共有バリデーターの動作を使用します。getIdentityById404Identity not found または 500Failed to get identity を生成する場合があります。

完全なソースを表示
export const getIdentityRoute = withRoute({
handler: compose(
applyPayloadArgs(
getIdentityById,
[
['context', 'db', 'identities'],
['params', 'requestParams', 'identityId'],
],
'rawIdentity',
),
flatMapAsync(applyPayloadArgs(normalizeIdentity, [['context', 'data', 'rawIdentity']], 'identity')),
lift(orThrow([], [['context', 'data', 'identity']])),
),
method: 'GET',
path: '/identities/:identityId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

updateIdentityRoute

実装

エンドポイント: PATCH /identities/:identityId

アイデンティティを更新し、再読み込みします。バリデーターは次の順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])

アクセス: 認証済み管理者;デフォルトのBearerヘッダーまたはcookieモードで accessToken Cookieを使用します。

リクエスト: updateIdentitySchema は文字列パス identityId と必須の application/json ボディを必須とします。ボディは厳格なオブジェクトです:省略可能な email (文字列)、emailVerified (ブール値)、および typeId (文字列) のみが許可されたフィールドです。

パイプライン: updateIdentitygetIdentityByIdnormalizeIdentityorThrow

成功: 再読み込みされたアイデンティティのデフォルト 200 JSONで、password と MongoDB _id が削除されています。

失敗: 認証と管理者検証はリンクされた共有バリデーターの動作を使用します。updateIdentity400404Identity not found、または 500Failed to update identity を生成する場合があります;再読み込みは追加でリンクされた getIdentityById の失敗を生成する可能性があります。

完全なソースを表示
export const updateIdentityRoute = withRoute({
handler: compose(
applyPayloadArgs(
updateIdentity,
[
['context', 'db', 'identities'],
['params', 'requestParams', 'identityId'],
['params', 'requestBody'],
],
'identityId',
),
flatMapAsync(
applyPayloadArgs(
getIdentityById,
[
['context', 'db', 'identities'],
['context', 'data', 'identityId'],
],
'rawIdentity',
),
),
flatMapAsync(applyPayloadArgs(normalizeIdentity, [['context', 'data', 'rawIdentity']], 'identity')),
lift(orThrow([], [['context', 'data', 'identity']])),
),
method: 'PATCH',
path: '/identities/:identityId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

deleteIdentityRoute

実装

エンドポイント: DELETE /identities/:identityId

アイデンティティを削除します。バリデーターは次の順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])

アクセス: 認証済み管理者;デフォルトのBearerヘッダーまたはcookieモードで accessToken Cookieを使用します。

リクエスト: deleteIdentitySchema は文字列のパスパラメーター identityId を必須とします。

パイプライン: deleteIdentitydeleteIdentityTerminator

成功: レスポンスボディなしの 204

失敗: 認証と管理者検証はリンクされた共有バリデーターの動作を使用します。deleteIdentity404Identity not found または 500Failed to delete identity を生成する場合があります;ターミネーターは 500Unknown error deleting identity を生成する可能性があります。

完全なソースを表示
export const deleteIdentityRoute = withRoute({
handler: compose(
applyPayloadArgs(
deleteIdentity,
[
['context', 'db', 'identities'],
['params', 'requestParams', 'identityId'],
],
'deleteIdentity',
),
lift(deleteIdentityTerminator),
),
method: 'DELETE',
path: '/identities/:identityId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

lockIdentityRoute

実装

エンドポイント: POST /identities/:identityId/lock

アイデンティティをロックします。バリデーターは次の順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])

アクセス: 認証済み管理者;デフォルトのBearerヘッダーまたはcookieモードで accessToken Cookieを使用します。

リクエスト: lockIdentitySchema は文字列のパスパラメーター identityId を必須とします;スキーマはリクエストボディを定義せず、ルートも読み取りません。

パイプライン: buildLockIdentityPayloadupdateIdentityorThrow。ペイロードビルダーと更新ブロックはそれぞれ withLogging でラップされています。

成功: レスポンスボディなしの 204

失敗: 認証と管理者検証はリンクされた共有バリデーターの動作を使用します。updateIdentity400404Identity not found、または 500Failed to update identity を生成する場合があります。

完全なソースを表示
export const lockIdentityRoute = withRoute({
handler: compose(
withLogging(applyPayloadArgs(buildLockIdentityPayload, [], 'identityFieldsToUpdate')),
flatMapAsync(
withLogging(
applyPayloadArgs(
updateIdentity,
[
['context', 'db', 'identities'],
['params', 'requestParams', 'identityId'],
['context', 'data', 'identityFieldsToUpdate'],
],
'hasUpdatedIdentity',
),
),
),
// TODO: アイデンティティブロックのエラーを再構築し、そこに追加する
lift(orThrow([], [[''], 204])),
),
method: 'POST',
path: '/identities/:identityId/lock',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

unlockIdentityRoute

実装

エンドポイント: POST /identities/:identityId/unlock

アイデンティティのロックを解除します。バリデーターは次の順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])

アクセス: 認証済み管理者;デフォルトのBearerヘッダーまたはcookieモードで accessToken Cookieを使用します。

リクエスト: unlockIdentitySchema は文字列のパスパラメーター identityId を必須とします;スキーマはリクエストボディを定義せず、ルートも読み取りません。

パイプライン: buildUnlockIdentityPayloadupdateIdentityorThrow。ペイロードビルダーと更新ブロックはそれぞれ withLogging でラップされています。

成功: レスポンスボディなしの 204

失敗: 認証と管理者検証はリンクされた共有バリデーターの動作を使用します。updateIdentity400404Identity not found、または 500Failed to update identity を生成する場合があります。

完全なソースを表示
export const unlockIdentityRoute = withRoute({
handler: compose(
withLogging(applyPayloadArgs(buildUnlockIdentityPayload, [], 'identityFieldsToUpdate')),
flatMapAsync(
withLogging(
applyPayloadArgs(
updateIdentity,
[
['context', 'db', 'identities'],
['params', 'requestParams', 'identityId'],
['context', 'data', 'identityFieldsToUpdate'],
],
'hasUpdatedIdentity',
),
),
),
// TODO: アイデンティティブロックのエラーを再構築し、そこに追加する
lift(orThrow([], [[''], 204])),
),
method: 'POST',
path: '/identities/:identityId/unlock',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});