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

✅ プロフィールバリデーター

プロフィールルートは、共通 SDK ガードをソース順に組み合わせます。バリデーターは Express ミドルウェアではなくルートガードです。正規の契約は Common と Identity に記載されています。Profile は独自のバリデーターをエクスポートしないため、このページでは共通ガードと正確な Profile ルート合成を記録します。意図的に実装ソースの抜粋は含めていません。

一覧

バリデーター読み取る値成功条件失敗 / エラー利用箇所
isAuthenticated()context.authenticate、または Bearer フォールバック選択されたアダプターが解決するアダプターエラーを伝播するすべての Profile ルート
checkIdentityType(['admin'])認証アダプター、db.identities、構成済みタイプ ID呼び出し元が構成済みの admin タイプを持つセットアップは 500、トークンは 401、認可は 403アイデンティティ検索以外のすべてのルート
isSelf(...)構成済みのペイロードパス、トークンのアイデンティティ IDID が一致する無効なトークンは 401、欠落/不一致は 403プロフィール作成とアイデンティティ検索
ownsProfile(...)db.profiles、構成済みプロフィール ID、トークンのアイデンティティ呼び出し元が要求されたプロフィールを所有する400401403、または 500プロフィールリソースルート
some(...validators)子バリデーターいずれかの子が成功するすべて失敗した場合、収集した最初の子エラー2 つの一覧ルート以外のすべてのルート

ルート合成

ガード順序ルート
isAuthenticated()、続いて some(checkIdentityType(['admin']), isSelf(['params', 'requestBody', 'identityId']))createProfileRoute
isAuthenticated()、続いて some(checkIdentityType(['admin']), ownsProfile(['params', 'requestParams', 'profileId']))getProfileRouteupdateProfileRoutedeleteProfileRoutegetAvatarUploadUrlRoutecreateProfileFollowRoutedeleteProfileFollowRoutegetProfileFollowersRoutecreateOrganizationFollowRoutedeleteOrganizationFollowRoutecreateProductLikeRoutedeleteProductLikeRoute
isAuthenticated()、続いて checkIdentityType(['admin'])findProfilesRoute
isAuthenticated()、続いて isSelf(['params', 'requestParams', 'identityId'])findProfilesByIdentityIdRoute

詳細

isAuthenticated()

実装

シグネチャ: isAuthenticated(): Validator。すべての Profile ルートで最初に実行され、context.authenticate(payload) または getBearerTokenInfo Bearer フォールバックを呼び出します。返されたトークン情報は検査せず、アダプターの拒否を伝播します。正規の Common バリデーター契約ルート合成 の正確な利用箇所を参照してください。

checkIdentityType(['admin'])

実装

シグネチャ: checkIdentityType(['admin']): Validatordb.identitiesconfiguration.identity.typeIds を必要とし、リクエストを認証して呼び出し元アイデンティティを読み込み、その typeIdconfiguration.identity.typeIds.admin と比較します。セットアップの欠落は 500、無効なユーザートークンは 401、アイデンティティ検索失敗・タイプ ID 欠落・未認可タイプは 403 です。管理者専用プロフィール一覧では直接実行され、他の該当ルートでは some(...) の子になります。some(...) は子を並行して開始します。ルート合成を参照してください。

isSelf(...)

実装

シグネチャ: isSelf<T extends string>(identityIdPathInPayload: [T, ...T[]]): ValidatorcreateProfileRoute['params', 'requestBody', 'identityId'] を、findProfilesByIdentityIdRoute['params', 'requestParams', 'identityId'] を渡します。有効なユーザートークンを必要とし、構成済み値をその identityId と比較します。無効なトークンは 401、対象の欠落または不一致は 403 です。Identity バリデータールート合成を参照してください。

ownsProfile(...)

実装

ownsProfile は、profiles コレクションとリソース所有者パス ['identityId'] に対する SDK の ownsResource 部分適用です。各 Profile 利用箇所は ['params', 'requestParams', 'profileId'] を渡します。有効なユーザートークン、db.profiles、およびそのパスのプロフィール ID を必要とします。プロフィールを読み込み、profile.identityId がトークンのアイデンティティ ID と一致した場合にのみ成功します。失敗は、無効なトークンが 401、profiles コレクション欠落が 500、プロフィール ID 欠落が 400、データベースエラー・所有者不在・所有権不一致が 403 です。利用箇所はルート合成に一覧されています。

some(...validators)

実装

シグネチャ: some(...args: Validator[]): Validator。すべての子バリデーターを並行して実行し、少なくとも 1 つが成功したときに成功します。どれも成功しない場合、子の順序で最初に収集した NodeblocksError をスローします。未知の拒否は 500 Unknown error になります。Profile ルートは、代替分岐が isSelf(...) である createProfileRoute を除き、管理者または所有者の分岐を使用します。正規の Common バリデーター契約ルート合成を参照してください。