Alfresco禁止所有用户删除内容

时间:2012-01-23 09:03:23

标签: java javascript alfresco

我有下一个任务 - 禁止所有用户(管理员除外)删除Alfresco中的内容。我正在使用权限服务,但它不起作用:

private void setReadOnly(ScriptNode node) {
        permissionService.deletePermissions(node.getNodeRef());
        permissionService.setPermission(node.getNodeRef(),
PermissionService.ALL_AUTHORITIES, PermissionService.CONSUMER, true);
}

但是,如果我添加我的用户,如果其他组(例如 - 模板设计师),而不是添加新的权限来阻止来自Alfresco Share的内容(例如group-“TEMPLATE_DESIGNER”角色 - “COORDINATOR”) - 之后我的用户必须删除内容,添加新内容(如果是文件夹)和其他... 另一种解决我问题的方法 -

private void setReadOnly(ScriptNode node) {
        permissionService.deletePermissions(node.getNodeRef());
        permissionService.setInheritParentPermissions(node.getNodeRef(), false);
}

但由于某种原因它不合适。请回答 - 如何禁止删除所有用户的内容(管理员除外)? 谢谢。

2 个答案:

答案 0 :(得分:2)

您是否只能更改permissionDefinitions.xml并删除每个角色的删除权限?

管理员有一个单独的角色,请保持原样。

更新: 如果您只想为一个文件夹执行此操作,则可以手动设置权限。取消检查继承权限并设置组和&用户到编辑权限。只有协调员具有删除权限,请参阅第页 Docs

如果您要删除仍拥有删除权限的所有者的权限。只需创建一个删除所有者的Javascript。

答案 1 :(得分:2)

好的第二回答:

创建一个实现NodeServicePolicies.BeforeDeleteNodePolicy的行为。

每次用户尝试删除项目之前都会触发此行为。 那么你将有一个NodeRef,从那里你可以检查它是哪个节点,以及你是否想要删除它。

最好的方法是:

  • 广告自定义方面并使用行为进行评估
  • 或者定义一个自定义节点类型,它具有自定义元数据布尔值或由javascript或触发javascript的规则设置的内容。并隐藏该字段,因此没有用户可以选中/取消选中它

请通过Jeff Pots检查此PDF关于创建行为的信息:)