我正在尝试确定当前用户是否具有删除权限。我可以检查该人员的ACLEntry,但是如果他们从一个或多个组获得他们的访问权限,这将意味着循环访问ACL中的组名称并检查他们是否有权删除然后查看用户是否是该成员组。这可能是一个相当密集的过程。我听说ext lib中可能有一个方法但是找不到任何东西。 确定用户是否可以删除文档的最佳方法是什么?
答案 0 :(得分:6)
稍微调整this example,这是一个允许您查询此权限的函数(以及其他一些特权,以便进行测量):
function getUserPrivileges() {
var privileges = database.queryAccessPrivileges(context.getUser().getDistinguishedName());
return {
createDocuments: ((privileges & NotesDatabase.DBACL_CREATE_DOCS) > 0),
deleteDocuments: ((privileges & NotesDatabase.DBACL_DELETE_DOCS) > 0),
readPublicDocuments: ((privileges & NotesDatabase.DBACL_READ_PUBLIC_DOCS) > 0),
writePublicDocuments: ((privileges & NotesDatabase.DBACL_WRITE_PUBLIC_DOCS) > 0)
};
}
如果将上述内容添加到脚本库中,那么引用该库的任何代码都可能包含如下逻辑:
if (getUserPrivileges().deleteDocuments) {
// delete something…
}
为了获得更大的灵活性,您可以调整getUserPrivileges()
函数,以便在用户尝试删除的特定数据库上传递句柄,而不是始终假设它是最新的。