解释
请记住,您的基本 CRUDS 权限 定义角色可以和不能对集合中的所有项目执行的操作。 自定义访问权限 更进一步,让您定义角色可以和不可以对每个项目执行的操作 集合,基于其字段值。
工作流是您使用这些权限技术为内容或数据创建创建结构化阶段的时候。 简单来说,就是当你有两个或更多的角色,你在内容创建过程的每个阶段给他们不同的权限。
您可以配置无数种可能的工作流程。 但是对于这个秘籍,我们将配置一个简单的工作流程,其中“作者”和“编辑”一起工作以创建、共同编辑和发布“文章”。
对于这个秘籍,我们的工作流程将分为三个阶段,draft
、under review
和 published
,这将在 status
字段中定义。
status | Author | Editor |
---|---|---|
Article is not yet created | Author can create new items in articles , but only with a status of draft . | Editor cannot create new items in articles . |
Draft | Author creates and edits the article. Then can set status to under review when ready. | Editor has either read-only, or no permissions at all. |
Under Review | Author can edit the article's content, but not the status field. | Editor can edit the article, as well as set status to Draft or Published . |
Published | Author is no longer responsible for article, and has read-only permissions. | Editor has permissions to update or delete the article. |
整个工作流程是使用权限创建的。 创建这些阶段所需要做的就是根据 status 的值有条件地更改 articles 中每个项目的 author
和 editor
权限。
How-To Guide
要求
要实施工作流程,您需要:
- 了解 Directus 中的 permissions 和 filters。
- 具有某种内容的集合。 在这个秘籍中,我们将使用一个名为 articles 的集合。
- 该集合上的一个字段,用于有条件地验证。 我们将使用“状态”字段。
- 将用于创作内容的两个_(或更多)_角色。 我们将使用
writer
和editor
角色。
要为“文章”创建结构化工作流,请按照以下步骤操作。
- 首先,创建一个字段来跟踪文章状态。 我们将此字段称为“status”,但它可以命名为任何名称。
- 创建字段 带有下拉界面。 将其命名为“状态”并添加您的内容创建过程所需的阶段_(“草稿”、“正在审查”和“已发布”)_。
- 接下来,创建两个角色:
author
和editor
。 - 最后配置 自定义访问权限 基于
status
字段值的每个角色。- 对于
author
角色:- 在 Create > Use Custom > Field Validation 下设置过滤器,以确保作者只能创建处于“草稿”状态的文章。
- 启用所有读取权限。
- 在更新 > 使用自定义 > 项目权限 下设置过滤器,以确保用户可以更新处于“草稿”或“正在审查”状态的文章。
- 在Update > Use Custom > Field Validation 下设置过滤器,以确保用户只能将文章状态更新为“under review”。
- 限制删除权限。
- 限制共享权限。
- 对于
editor
角色:- 限制创建权限。
- 启用所有读取权限。
- 在 Update > Use Custom > Item Permissions 下设置过滤器,以确保用户只能更新处于“under review”状态的文章。
- 在 Update > Use Custom > Field Validation 下设置过滤器,以确保用户只能将状态更新为“已发布”。
- 限制删除权限。
- 限制共享权限。
- 对于
最后的提示
本秘籍涵盖了一个简单的工作流程示例。 当您继续前进并创建自己的定制工作流程时,请记住:
- 您可以使用任意数量的角色。
- 您可以使用任何集合或相关链接的集合。
- 您可以通过向“状态”字段添加更多值来在工作流程中添加更多阶段。
请务必密切注意您如何为工作流配置自定义访问权限。 无意的错误配置可能会产生副作用。
在我们上面简单的“文章”工作流程中,两个团队成员之间的共同编辑工作流程中的轻微配置错误_可能_不是大问题。 但在其他情况下,它可能会产生重大后果。 例如,让我们想象一下:
writer
和editor
角色是teacher
和student
角色。articles
集合改为tests
集合。- 如果测试是“未开始”、“进行中”或“已提交”,则定义“状态”字段。
这里的一个小错误配置可能会破坏学术诚信。 这里有几个潜在的问题:
- 学生重新参加/重新编辑他们自己提交的测试。
- 学生参加/编辑/删除其他学生的测试。
- 教师修改他们喜欢或不喜欢的学生的成绩。
- 超越!
创建您自己的工作流时,最好定义所涉及的每个角色、工作流中的每个阶段以及每个角色在每个阶段拥有的明确权限集。
下一步
可以使用自定义 Interfaces 和 flows 进一步增强工作流程。