✅ プロフィールバリデーター
プロフィールルートは、共通 SDK ガードをソース順に組み合わせます。バリデーターは Express ミドルウェアではなくルートガードです。正規の契約は Common と Identity に記載されています。Profile は独自のバリデーターをエクスポートしないため、このページでは共通ガードと正確な Profile ルート合成を記録します。意図的に実装ソースの抜粋は含めていません。
一覧
| バリデーター | 読み取る値 | 成功条件 | 失敗 / エラー | 利用箇所 |
|---|---|---|---|---|
isAuthenticated() | context.authenticate、または Bearer フォールバック | 選択されたアダプターが解決する | アダプターエラーを伝播する | すべての Profile ルート |
checkIdentityType(['admin']) | 認証アダプター、db.identities、構成済みタイプ ID | 呼び出し元が構成済みの admin タイプを持つ | セットアップは 500、トークンは 401、認可は 403 | アイデンティティ検索以外のすべてのルート |
isSelf(...) | 構成済みのペイロードパス、トークンのアイデンティティ ID | ID が一致する | 無効なトークンは 401、欠落/不一致は 403 | プロフィール作成とアイデンティティ検索 |
ownsProfile(...) | db.profiles、構成済みプロフィール ID、トークンのアイデンティティ | 呼び出し元が要求されたプロフィールを所有する | 400、401、403、または 500 | プロフィールリソースルート |
some(...validators) | 子バリデーター | いずれかの子が成功する | すべて失敗した場合、収集した最初の子エラー | 2 つの一覧ルート以外のすべてのルート |
ルート合成
| ガード順序 | ルート |
|---|---|
isAuthenticated()、続いて some(checkIdentityType(['admin']), isSelf(['params', 'requestBody', 'identityId'])) | createProfileRoute |
isAuthenticated()、続いて some(checkIdentityType(['admin']), ownsProfile(['params', 'requestParams', 'profileId'])) | getProfileRoute、updateProfileRoute、deleteProfileRoute、getAvatarUploadUrlRoute、createProfileFollowRoute、deleteProfileFollowRoute、getProfileFollowersRoute、createOrganizationFollowRoute、deleteOrganizationFollowRoute、createProductLikeRoute、deleteProductLikeRoute |
isAuthenticated()、続いて checkIdentityType(['admin']) | findProfilesRoute |
isAuthenticated()、続いて isSelf(['params', 'requestParams', 'identityId']) | findProfilesByIdentityIdRoute |
詳細
isAuthenticated()
実装
シグネチャ: isAuthenticated(): Validator。すべての Profile ルートで最初に実行され、context.authenticate(payload) または getBearerTokenInfo Bearer フォールバックを呼び出します。返されたトークン情報は検査せず、アダプターの拒否を伝播します。正規の Common バリデーター契約 と ルート合成 の正確な利用箇所を参照してください。
checkIdentityType(['admin'])
実装
シグネチャ: checkIdentityType(['admin']): Validator。db.identities と configuration.identity.typeIds を必要とし、リクエストを認証して呼び出し元アイデンティティを読み込み、その typeId を configuration.identity.typeIds.admin と比較します。セットアップの欠落は 500、無効なユーザートークンは 401、アイデンティティ検索失敗・タイプ ID 欠落・未認可タイプは 403 です。管理者専用プロフィール一覧では直接実行され、他の該当ルートでは some(...) の子になります。some(...) は子を並行して開始します。ルート合成を参照してください。
isSelf(...)
実装
シグネチャ: isSelf<T extends string>(identityIdPathInPayload: [T, ...T[]]): Validator。createProfileRoute は ['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 バリデーター契約 と ルート合成を参照してください。