我有下一个任务 - 禁止所有用户(管理员除外)删除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);
}
但由于某种原因它不合适。请回答 - 如何禁止删除所有用户的内容(管理员除外)? 谢谢。
答案 0 :(得分:2)
您是否只能更改permissionDefinitions.xml
并删除每个角色的删除权限?
管理员有一个单独的角色,请保持原样。
更新: 如果您只想为一个文件夹执行此操作,则可以手动设置权限。取消检查继承权限并设置组和&用户到编辑权限。只有协调员具有删除权限,请参阅第页 Docs
如果您要删除仍拥有删除权限的所有者的权限。只需创建一个删除所有者的Javascript。
答案 1 :(得分:2)
好的第二回答:
创建一个实现NodeServicePolicies.BeforeDeleteNodePolicy的行为。
每次用户尝试删除项目之前都会触发此行为。 那么你将有一个NodeRef,从那里你可以检查它是哪个节点,以及你是否想要删除它。
最好的方法是:
请通过Jeff Pots检查此PDF关于创建行为的信息:)