修復計畫:公告系統安全與可用性(A~E 完整報告) 的副本
由 Sun Lin 分享的筆記
修改範圍 分支:cubelv-cli-announcement-hardening(從 main 開出) 修改檔案:index.html + announcement-admin.html 未修改:Supabase RLS、正式資料、GitHub Pages 設定 A. 兩處核心修改 index.html(前台) 原來 改成 從 localStorage.getItem('supabase-url') 讀設定 硬編碼 SUPABASEURL / SUPABASEPUBLISHABLEKEY 常數 若 localStorage 無設定 → 顯示「尚未設定連線」錯誤 頁面載入時直接建立 Supabase client 並讀取公告 loadPublishedAnnouncements(url, key) 接受參數 改為無參數版本,直接使用常數 announcement-admin.html(後台) 原來 改成 頁面載入不自動初始化,需手動按「初始化連線」 頁面載入時自動初始化(若常數有效) const adminEmail = 'mj29379898@gmail.com' 在前端做 email 比對 抽成 ADMINEMAIL 常數,只用於 Magic Link 發送目標 verifyAdmin() 檢查 session.user.email === adminEmail ,不符就踢出 改為登入成功即顯示管理面板, 權限由 Supabase RLS 強制 管理員信箱直接寫死在 HTML <strong> 改用 <strong id="admin-email-display"> + JS 動態填入 B. Supabase RLS SQL 規則 執行位置:Supabase Dashboard → SQL Editor → 貼上執行 announcements…