有没有办法确定当前用户是否删除权限?

时间:2014-01-14 00:34:59

标签: xpages xpages-extlib

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

1 个答案:

答案 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()函数,以便在用户尝试删除的特定数据库上传递句柄,而不是始终假设它是最新的。