Bil*_*l F 1 xpages xpages-extlib
我正在尝试确定当前用户是否具有删除权限.我可以检查该人员的ACLEntry,但是如果他们从一个或多个组获得他们的访问权限,这将意味着循环访问ACL中的组名称并检查他们是否有权删除然后查看用户是否是该成员组.这可能是一个相当密集的过程.我听说ext lib中可能有一个方法但是找不到任何东西.确定用户是否可以删除文档的最佳方法是什么?
稍微调整一下这个例子,这里有一个函数可以让你查询这个特权(以及其他一些特权,以获得良好的衡量标准):
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)
};
}
Run Code Online (Sandbox Code Playgroud)
如果将上述内容添加到脚本库中,则引用该库的任何代码都可以包含如下逻辑:
if (getUserPrivileges().deleteDocuments) {
// delete something…
}
Run Code Online (Sandbox Code Playgroud)
为了获得额外的灵活性,您可以调整getUserPrivileges()要在用户尝试删除的特定数据库上传递句柄的函数,而不是始终假设它是当前的.