Skip to content

後台唯讀展示帳號(viewer 角色) - #51

Merged
tim32503 merged 1 commit into
mainfrom
feat/admin-viewer-role
Sep 1, 2026
Merged

tim32503 merged 1 commit into
mainfrom
feat/admin-viewer-role

Conversation

@tim32503

@tim32503 tim32503 commented Sep 1, 2026

Copy link
Copy Markdown
Owner

需求說明

讓作品集訪客能實際瀏覽後台(而非只看截圖),同時把「權限分級+伺服器端強制唯讀」作為可展示的設計決策。

變更內容

  • admins.role enum(operator 預設/viewer
  • 伺服器端唯讀強制Admin::BaseController 統一攔截 viewer 的所有非 GET/HEAD 請求——採整體策略而非逐 action 列舉,未來新增的寫入端點自動被涵蓋;sessions 豁免(viewer 可登入登出)
  • viewer 介面:「展示模式(唯讀)」banner、寫入表單原地改為靜態說明;operator 完全不受影響
  • seeds 公開展示帳號:demo-admin@venture-ferris.examplewalkthrough2026刻意公開,README 說明攔截在 controller 層非前端隱藏)

測試確認

  • bin/rails test:221 runs, 0 failures(+12);test:system:13 runs, 0 failures
  • 本機兩帳號實走:viewer 五頁可瀏覽+四寫入端點被擋且資料零變化;operator 寫入照常
  • rubocop 0 offenses、brakeman 0 warnings、seeds 冪等

- admins.role enum(operator 預設/viewer);BaseController 統一
  攔截 viewer 的所有非 GET 請求(整體策略,未來新增寫入端點
  自動涵蓋),sessions 豁免使其可登入登出
- viewer 介面顯示「展示模式(唯讀)」banner,寫入表單改靜態
  說明;operator 完全不受影響(迴歸測試鎖住)
- seeds 新增公開展示帳號 demo-admin@venture-ferris.example
  (密碼刻意公開於 README,寫入攔截在伺服器端非前端隱藏)
- 測試 221 integration(+12:五頁瀏覽、四寫入端點零變化、
  登出、operator 迴歸)
@tim32503 tim32503 self-assigned this Sep 1, 2026
@tim32503
tim32503 merged commit 9c686f1 into main Sep 1, 2026
4 checks passed
@tim32503
tim32503 deleted the feat/admin-viewer-role branch September 1, 2026 09:27
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