有没有办法确定当前用户是否删除了righte?

Bil*_*l F 1 xpages xpages-extlib

我正在尝试确定当前用户是否具有删除权限.我可以检查该人员的ACLEntry,但是如果他们从一个或多个组获得他们的访问权限,这将意味着循环访问ACL中的组名称并检查他们是否有权删除然后查看用户是否是该成员组.这可能是一个相当密集的过程.我听说ext lib中可能有一个方法但是找不到任何东西.确定用户是否可以删除文档的最佳方法是什么?

Tim*_*ony 6

稍微调整一下这个例子,这里有一个函数可以让你查询这个特权(以及其他一些特权,以获得良好的衡量标准):

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()要在用户尝试删除的特定数据库上传递句柄的函数,而不是始终假设它是当前的.