Skip to content

fix(accounts): iframe 内のページをログイン画面へ戻す (issue62569) - #1902

Merged
mhaya merged 1 commit into
develop_v2.0.4from
fix/issue62569-iframe
Aug 28, 2026
Merged

fix(accounts): iframe 内のページをログイン画面へ戻す (issue62569)#1902
mhaya merged 1 commit into
develop_v2.0.4from
fix/issue62569-iframe

Conversation

@mhaya

@mhaya mhaya commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

PR #1901 のマージ後にプッシュしたため取り込まれなかった分。issue62569 の続き。

自動レビューの指摘(#1901 のコメント)への対応。

問題

未認証時に JSON を返すかどうかを Sec-Fetch-Dest で判定しているが、
document 以外を一律「JSON を欲しがる呼び出し」とみなしていた。

iframe / frame / embed / object もブラウザのナビゲーションで、
枠の中に HTML が描画される。@login_required のページを <iframe>
読み込むと、従来はログイン画面へ 302 だったものが生の JSON になり、
ログインする手立てが無くなる。

invenio-previewer が制限付きファイルを <iframe> で埋め込んでいる。

修正

HTML を描画する遷移を NAVIGATION_DESTS にまとめ、それ以外を JSON 扱いにした。

確認

実機(/items/iframe、未認証):

Sec-Fetch-Dest 無し / document / iframe / frame / embed / object  -> 302
empty / script                                                    -> 401

テスト

modules/weko-accounts/tests/test_unauthorized.py を新設(16 passed)。
この判定にテストが無く、今回の不備もそこを突かれている。

ナビゲーション5種は NAVIGATION_DESTS から自動でパラメータ化しているので、
値を足せばテストも増える。HTML フォーム POST がログイン画面へ行くことも
固定した(以前「非GETなら JSON」という規則で壊した箇所の再発防止)。

Sec-Fetch-Dest が 'document' 以外なら JSON を返す判定にしていたが、
'iframe' / 'frame' / 'embed' / 'object' もブラウザのナビゲーションで、
枠の中に HTML が描画される。ここに 401 JSON を返すと生の JSON が
表示され、ログインする手立てが無くなる。
invenio-previewer が制限付きファイルを <iframe> で埋め込んでいる。

HTML を描画する遷移を NAVIGATION_DESTS にまとめ、それ以外を
JSON 扱いにした。

実機での確認 (/items/iframe, 未認証):
  Sec-Fetch-Dest 無し / document / iframe / frame / embed / object -> 302
  empty / script                                                   -> 401

あわせて tests/test_unauthorized.py を新設した。この判定にテストが
無く、今回の不備もそこを突かれている。ナビゲーション5種は
NAVIGATION_DESTS から自動でパラメータ化しているので、種類を足せば
テストも増える。HTML フォーム POST がログイン画面へ行くことも
固定した(以前「非GETなら JSON」で壊した箇所)。16 passed。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019bkXKrjzJ2VNWVwTpDAPuZ
@github-actions

Copy link
Copy Markdown

Claude によるレビュー

指摘 0 件(コスト $0.1401)

差分のみを対象にした自動レビューです。誤りが含まれることがあります。

@mhaya
mhaya merged commit 6eeefa9 into develop_v2.0.4 Aug 28, 2026
30 of 96 checks passed
@github-actions

Copy link
Copy Markdown

API インベントリ差分(件数のみ)

明細は公開できないため件数のみ表示しています。該当箇所はプライベートリポジトリ側の台帳・レポートで確認してください。

ベースラインとの差分

API インベントリ差分レポート

  • 旧: d2fdc0e3b v2.0.3 (profile=default) endpoints=928 (外部ライブラリ由来 359)
  • 新: ad04e6468 v2.0.3-73-gad04e6468 (profile=default) endpoints=928 (外部ライブラリ由来 359)

判定: ✅ PASS (FAIL 0 / WARN 1)

サマリ

分類 件数
ADDED 0
REMOVED 0
RULE_CHANGED 0
METHODS_CHANGED 0
AUTH_CHANGED 22
IMPL_CHANGED 0
ATTRS_UNKNOWN_NEW 0
ModelView 追加 0
ModelView 削除 0
ModelView フラグ変化 0
config 変化 0
コメントアウト認証の増加 0
依存パッケージの版変化 2

[WARN] W6 依存パッケージの版が変化した — 2件

  • pyld — 3.1.0 -> 3.2.0
  • weko-redis — 0.1.0.dev20170000 -> (削除)

台帳との突き合わせ

スナップショット ↔ インベントリ 突き合わせ

  • リビジョン: ad04e6468 v2.0.3-73-gad04e6468 経路URI=908
  • 台帳: 行=1048 URI=919

件数のみ。詳細はプライベートリポジトリ側の完全版レポートを参照。

判定: ✅ 一致 (0件)

検出 件数
A. インベントリ未収載(抽出漏れ) 0
B. 実機に無い(未説明) 0
B'. 実機に無い(既知・許容) 11
C. メソッド不一致 0
D. app列の不一致 0
E. endpoint 未収載 0
E'. endpoint が実機に無い(参考) 1

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant