管理員先以 Firebase ID Token 通過白名單與啟用狀態,再由後端合併角色預設和個人覆寫。ROLE_ADMIN 只代表管理員身分,端點仍以 permissions.view/permissions.edit 判斷操作權限。
Firebase Token
→ 比對 admin_users email、active、firebase_uid
→ 讀取 admin_role_permissions
→ 套用 admin_user_permissions.allowed
→ 建立 Spring Security authorities
→ @PreAuthorize 檢查端點權限
建立管理員時只建立白名單,固定為 active=true、firebase_uid=null。第一次 Admin Session 成功後才綁定 Firebase UID;已綁定帳號若 UID 不同會拒絕。
權限更新傳入完整權限集合,Service 只保存和角色預設不同的覆寫。edit=true 必須同時具備同 section 的 view=true。
active=false。admin。permissions.edit。AdminAPI.users 與 AdminAPI.permissions 提供正式 REST facade。Mock 模式保留原本的 localStorage.adminEmployees;Backend 模式只讀寫正式 API。全站 AdminAPI 切換仍屬 G-6。
mvnw.cmd -q -DskipTests compilemvnw.cmd -q -Dtest=AdminPermissionServiceTest testnpm.cmd run test:admin-rbacnode --check admin/js/permissions.jsDB_PASSWORD 後執行 AdminRbacPostgreSqlIntegrationTest