本卡屬 FR-132(母卡 CM-2510),A.3 判定層第 4 張。依賴:T-3.3。建議 model:opus。

這張卡做什麼(白話)

今天有四個地方各自判斷「這人有哪些權限」:API 判定、側欄選單、選單明細、JWT(登入後隨每個請求送出的身分憑證)裡的 is_admin 欄位。其中選單明細與 is_admin 不過濾已到期、已停用的指派——管理員角色過期了,他重新登入仍看得到管理頁入口。這張卡讓四者吃同一份「有效指派+展開結果」,順便修掉這兩個資安漏洞。各自改必漏一條,症狀是「選單看得到、點進去 403」且不報錯。

在哪裡

~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/infra/repository/ui_route_repo_impl.py:70-141      選單可見性(已套有效條件,改吃展開服務比對 route_capabilities)
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/app/service/user_service.py:522-529,547      選單明細(走 user.roles → role.capabilities,不過濾有效指派)
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/middleware/jwt_mw.py:79      JWT is_admin claim(不過濾有效指派)
FE src/config/router/index.js:1057-1066      requiresAdmin 吃 claim(不用改,claim 修好自動正確)

怎麼做

要寫測試

驗收條件

手測

紀律