权限
Bases 可以将整个 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 分别控制导出和评论。
接入业务权限
本地权限用于控制编辑器行为,不能代替服务端鉴权。协同应用仍需在服务端检查内容读取、加入协同和提交修改的权限,见服务端集成。
测试时分别使用编辑者、查看者和无权限用户,确认页面操作和直接请求都符合业务规则。
你觉得这篇文档如何?