メインコンテンツまでスキップ
バージョン: 0.14.0 (最新)

✅ 通知バリデーター

通知ルートは、ローカルの所有権ラッパー 1 つと共通のバリデーターファクトリー 2 つを組み合わせます。どのルートも checkIdentityType は組み合わせません。

一覧

バリデーター読み取る値成功条件失敗 / エラー利用箇所
isAuthenticated()context.authenticate(payload)選択されたアダプターがリクエストトークンを受け入れます。選択されたアダプターのエラーをそのまま伝播します。updateNotificationToReadRoutefindNotificationsRouteupdateNotificationToReadBatchRoute
ownsNotificationcontext.authenticatedb.notifications、パスの通知 ID通知の receiverId がトークンのアイデンティティ ID と一致します。400401403、または 500updateNotificationToReadRoute
isSelf(['params', 'requestParams', 'identityId'])context.authenticate とルートパスのアイデンティティ ID対象 ID がトークンのアイデンティティ ID と一致します。401 Invalid token、ID の欠落または不一致は 403findNotificationsRouteupdateNotificationToReadBatchRoute

詳細

isAuthenticated()

実装

シグネチャ: isAuthenticated(): Validator。返されるバリデーターは context.authenticate を読み取り、authenticate(payload) を待機します。このコンテキストエントリーがない場合、共通ファクトリーは Bearer アダプターにフォールバックします。返されたトークン情報を調べることもコレクションをクエリすることもないため、拒否は変更せずに伝播されます。

notificationService は、configuration.authMode'cookie' のときは Cookie アダプターを、それ以外では Bearer アダプターを提供します。これらのアダプターがリクエストの読み取りと認証 401 エラーの発生元です。通知サービスの設定 および共通の正規契約を参照してください。

利用箇所: updateNotificationToReadRoutefindNotificationsRouteupdateNotificationToReadBatchRoute

ownsNotification

実装

ローカルの partial(ownsResource, ['notifications', ['receiverId']]) ラッパーです。updateNotificationToReadRoute は、得られたファクトリーを ownsNotification(['params', 'requestParams', 'notificationId']) として 2 番目に呼び出します。返されるバリデーターは context.authenticate(または Bearer フォールバック)を通じて再度認証し、有効なユーザーアクセストークンを必要とします。db.notifications を読み取り、正確なパス ID でドキュメントを読み込み、ドキュメントの receiverIdtokenInfo.identityId と比較します。

ユーザーアクセストークンではないトークンには 401 Invalid token、コレクションが存在しない場合には 500 Resource does not exist、パスに値がない場合には 400 Invalid resource ID をスローします。検索が拒否されると 403 Failed to fetch resource になります。ドキュメントがない場合も receiverId がないため 403 Invalid owner ID になり、受信者のないドキュメントも同じエラーになります。受信者が異なる場合は 403 Identity is not the owner of the resource です。正規の ownsResource 契約を参照してください。

利用箇所: updateNotificationToReadRoute

isSelf(['params', 'requestParams', 'identityId'])

実装

findNotificationsRouteupdateNotificationToReadBatchRoute が 2 番目に呼び出す共通ファクトリーです。context.authenticate(または Bearer フォールバック)を通じて再度認証し、有効なユーザーアクセストークンを必要とします。渡された Ramda パスを通じて payload.params.requestParams.identityId を読み取り、tokenInfo.identityId と比較します。

ユーザーアクセストークンではないトークンには 401 Invalid token、パスに値がない場合には 403 Identity ID is required、対象が別のアイデンティティの場合には 403 Identity ID does not match をスローします。共通の正規契約を参照してください。

利用箇所: findNotificationsRoute および updateNotificationToReadBatchRoute