# 权限

- Human documentation: [https://docs.univer.ai/zh-CN/guides/slides/features/core/permissions](https://docs.univer.ai/zh-CN/guides/slides/features/core/permissions)

- Agent Markdown: [https://docs.univer.ai/zh-CN/guides/slides/features/core/permissions.md](https://docs.univer.ai/zh-CN/guides/slides/features/core/permissions.md)

- Requested language: `zh-CN`

- Content language: `zh-CN`

- Documentation version: `1.0.0-rc.0`

- Source: [slides/features/core/permissions.zh-CN.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/features/core/permissions.zh-CN.mdx)

---

Slides 权限通过命令更新，可以应用于演示文稿、单张幻灯片或单个元素。子级编辑权限不能覆盖只读的父级。

## 演示文稿权限

```ts
import { UnitAction } from '@univerjs/protocol'

const presentation = univerAPI.getActivePresentation()

if (!presentation) {
  throw new Error('No active presentation')
}

const permission = presentation.getPermission()

await permission.setPoint(UnitAction.Export, false)
await permission.setPoint(UnitAction.Print, true)

console.log(permission.getPoint(UnitAction.Print))
```

演示文稿级别支持 Edit、Copy、Print、Export 和 Comment。`setReadOnly()` 会关闭整个演示文稿的编辑权限，`setEditable()` 会重新启用编辑。

## 幻灯片与元素权限

```ts
const slide = presentation.getSlideByIndex(0)
const element = slide?.getElements()[0]

if (slide && element) {
  await slide.getPermission().setEditable(false)
  await slide.getElementPermission(element.getId()).setEditable(true)

  console.log(slide.getElementPermission(element.getId()).canEdit())
}
```

最终 `canEdit()` 会同时应用演示文稿、幻灯片和元素的权限上限。权限需要随快照持久化时，请保持幻灯片与元素 ID 稳定。
