Skip to content

booskiff-web: PR #9 レビュー残件 (medium/nit 集約) #10

Description

@turtton

PR #9 (drive-web-ui) の code review で検出された medium/nit 群を backlog 集約する。blocker/high は #9 の request-update ラウンドで解消済みまたは対処済み。急ぎではない。

Medium

  1. mock モードは認証のみの mock — データ系コールは常に CORE_API_URL へ流れる (mock クライアントは単体テスト専用で USE_MOCK には非配線)。README の「UI 開発 (既定)」という位置づけと齟齬あり。core 未起動では Drive 画面がエラーになる。選択肢: README の表現を修正、または mock データ配線の追加。
  2. real モード (Hydra OIDC) の E2E が存在しない — PR drive-web-ui: 最小 Web UI (PureScript + Flame SSR/hydration + Bun BFF) — apps/booskiff-web #9 の E2E は USE_MOCK=true のみ。real OAuth 経路は emumet-web からの踏襲で実績はあるが本 PR の範囲では未検証。Hydra+Kratos 入り compose の E2E 追加を検討 (大掛かりなので別 unit 化も可)。
  3. core 到達不能時のエラー形状 — BFF /api で BooskiffApiError 以外の例外 (fetch 失敗等) は未捕捉で Bun.serve のデフォルト 500 (ボディなし/JSON でない) に落ちる。JSON エラー形状 (502 等) への統一を検討。
  4. CSRF 多層防御 — /auth/login|logout には csrfCheck (Origin/Referer 検証) があるが /api の mutation 系は SameSite=Lax 依存。現状 Lax で実害は遮断されるが、/api にも Origin チェック追加を検討。
  5. ファイル詳細表示の解釈 — 契約の「一覧・詳細表示」に対し現状は専用の詳細ビュー/ルートなし (一覧行内の情報のみ)。要件として詳細ビューが必要か要確認。

Nit

  • mock JWKS エンドポイントの公開ゲートが USE_MOCK/USE_TEST_JWT の env flag のみ。明示的な非本番ゲート検討。
  • e2e fixture の秘密鍵 (e2e/fixtures/jwks.json 対の PEM) を repo にコミット。test-only 明示済みで core の慣例踏襲だが、本番流用事故に注意 (命名や配置で更に明確化する手もある)。
  • 未 pin イメージ: compose.e2e.yml の minio/minio:latest、Containerfile の oven/bun:1。
  • フォルダ rename の testid が folder.name 由来 (他の操作は folder.id)。rename 後の key 齟齬リスク。
  • /auth/logout 等が HTTP method を検査しない (Origin/Referer 通過で GET でも実行可能)。
  • folder_id が空文字の場合にそのまま core へ転送される (searchParams.get の '' は ?? undefined で潰せない)。
  • real OAuth callback で id_token の署名検証なし (表示用途のみ・Hydra 直接取得のため許容範囲だが多層防御として)。
  • SSR 初期レンダリングは常に未認証モデルで描画し hydration 後にデータ取得 (設計簡略化として明文化済み)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions