權限
可將整個 Base 或個別資料表、欄位、記錄與檢視設為唯讀。適合用於報表,或只允許編輯部分資料的情境。
使用這些 API 前,請先註冊 Bases 外掛並匯入 @univerjs-pro/bases/facade。
將 Base 設為唯讀
TypeScript
const base = univerAPI.getActiveBase()if (!base) throw new Error('Open a Base first')await base.getPermission().setReadOnly()console.log(base.getPermission().canEdit()) // falseawait base.getPermission().setEditable()限制個別物件
例如,限制一個資料表:
TypeScript
const table = base.getTables()[0]if (!table) throw new Error('Create a table first')await table.getPermission().setReadOnly()await table.getPermission().setEditable()欄位、記錄與檢視也提供 getPermission();註冊對應外掛後,儀表板與樞紐分析檢視同樣提供此方法。開放物件的編輯權限不會覆寫上層限制:將記錄設為可編輯,無法覆寫資料表的唯讀限制。
setReadOnly() 與 setEditable() 會回傳 Promise,必須使用 await。批次修改可使用 base.getPermission().setObjectPermissions(),參數請參閱 Bases Facade。
複製、匯出與留言
Base 層級的權限也可控制複製、匯出與留言。例如,停用複製:
TypeScript
import { UnitAction } from '@univerjs/protocol'await base.getPermission().setPoint(UnitAction.Copy, false)使用 UnitAction.Export 與 UnitAction.Comment 設定匯出與留言權限。
接入業務權限
本機權限控制的是編輯器行為。協同應用程式還必須在伺服器端對內容讀取、加入協同與提交修改進行授權,請參閱伺服器整合。
使用編輯者、檢視者與未授權使用者測試,同時檢查頁面操作與直接請求。
你覺得這篇文檔如何?