Skip to content

feat(xion) + ADR-0004: ControllerBase に unauthorizedRedirect() hook を追加する (#278)#287

Merged
hideyukiMORI merged 1 commit into
mainfrom
feat/278-session-check-hook
May 21, 2026
Merged

feat(xion) + ADR-0004: ControllerBase に unauthorizedRedirect() hook を追加する (#278)#287
hideyukiMORI merged 1 commit into
mainfrom
feat/278-session-check-hook

Conversation

@hideyukiMORI
Copy link
Copy Markdown
Owner

Summary

  • `ControllerBase::sessionCheck()` は `final` のまま、unauth HTML page の redirect 先決定を新規 `protected function unauthorizedRedirect(): string` に抽出。default は `LOGOUT_URI`。
  • subclass で hook 1 つを override すれば controller ごとに redirect URI を変えられる (例: `AdminPanelController` → `/admin/login`)。
  • ADR-0004 で「dispatch invariant は維持しつつ、redirect 先のみ open する」決定を記録。代替案 (`final` 除去) は明示的に reject。
  • 既存挙動は完全に不変 (`unauthorizedRedirect()` の default が `LOGOUT_URI` を返すので)。
  • FT5 finding F-3 への対応 (closes design(xion): ControllerBase::sessionCheck() の controller-level override hook を追加する (F-3 from FT5) #278)。

Test plan

  • 既存 `composer test` 通る想定 (sessionCheck の挙動は LOGOUT_URI 経由で同じ)
  • subclass で `unauthorizedRedirect()` を override すれば任意の URI を返せる (PR 内コード review で確認)
  • PR feat(ini): LOGOUT_URI を NENE_LOGOUT_URI で env override 可能にする (#277) #284 (LOGOUT_URI env override) と組み合わせれば 「global default は env で、controller ごとは hook で」の 2 段カスタマイズが可能
  • CI green で merge

🤖 Generated with Claude Code

ControllerBase::sessionCheck() は final で、unauth HTML page から
redirect される先が framework-wide const LOGOUT_URI 固定だった。
アプリが複数の認証セクション (例: /admin/login と /auth/login) を
持つ場合、controller ごとに redirect 先を変える手段が無かった
(FT5 finding F-3)。

ADR-0004 の選択肢 (b) hook 追加方式を採用:
- sessionCheck() は final のまま、redirect 先決定だけを
  protected function unauthorizedRedirect(): string に抽出
- default 実装は LOGOUT_URI を返すので既存挙動不変
- subclass は hook の override 1 つで login URL を変えられる

REST 経路は不変 (JSON SESSION-CLOSED のまま)。

ADR-0004 で「sessionCheck の dispatch invariant を保ちつつ、
redirect 先のみ open する」決定を記録。

Closes #278.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hideyukiMORI hideyukiMORI enabled auto-merge May 21, 2026 12:44
@hideyukiMORI hideyukiMORI merged commit 0e7502c into main May 21, 2026
2 checks passed
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.

design(xion): ControllerBase::sessionCheck() の controller-level override hook を追加する (F-3 from FT5)

1 participant