内容保护
AlphaPilot program
内容保护控制用户可以编辑或阅读文档中的哪些部分。使用策略为节点、标记、属性和内容定义权限。
仅支持客户端
内容保护仅应用于客户端。如需服务端内容保护,请联系我们。
安装
首先,联系我们加入内容保护试点计划。
获得访问权限后,请按照私有注册表设置指南操作,然后安装软件包:
npm install @tiptap/core @tiptap/starter-kit @tiptap/y-tiptap yjs @tiptap-pro/extension-content-protection将扩展添加到编辑器中。
import { Editor } from '@tiptap/core'
import StarterKit from '@tiptap/starter-kit'
import {
ContentProtection,
type ContentProtectionPolicy,
} from '@tiptap-pro/extension-content-protection'
const policy: ContentProtectionPolicy = {
version: 1,
rules: [
{
selector: { target: 'node', node: { types: ['heading'] } },
permissions: { edit: false },
},
],
}
const editor = new Editor({
extensions: [StarterKit, ContentProtection.configure({ policy })],
})提供一个定义可编辑内容的策略。
你也可以在编辑器运行时更新内容保护规则:
editor.commands.setContentProtectionPolicy({ policy })协作
内容保护支持 Tiptap 协作。每个协作者都可以有不同的本地策略。本地编辑会根据该策略检查;协作绑定产生的更新会被接受,以保持所有编辑器与共享文档同步。这包括初始同步和协作撤销/重做,即使当前本地策略会拒绝相应编辑。读取权限仍会控制每个协作者可以查看和复制的内容。
import Collaboration from '@tiptap/extension-collaboration'
const editor = new Editor({
extensions: [
StarterKit.configure({ undoRedo: false }),
Collaboration.configure({ document: ydoc }),
ContentProtection.configure({ policy: localPolicy }),
],
})这里,ydoc 是连接到协作提供商的共享 Y.Doc,localPolicy 是应用分配给该用户的策略。安装 @tiptap/extension-collaboration 以使用此设置。策略保留在本地,不会存储在共享文档中。这些客户端权限不会授权传入的协作更新;请在应用和协作服务中强制执行共享文档的访问控制。