如何检查某个用户是否具有 reader- 访问文档的权限

How to check if a certain user has reader-access to a document

对于具有 java bean 的 xpage 应用程序,我需要检查某个用户(不是当前用户)是否具有对文档的 reader 访问权限。以上所有访问级别(数据库 ACL、XPage ACL...)都可以认为是理所当然的。当前用户始终至少是作者。

每个文档有一个reader字段"readers"和三个作者字段"creator"、"authors"、"AdminAuthor",最后一个可以忽略,因为它总是只每个文档都包含“[Admin]”

当前的想法是像此处显示的那样获取用户组 (Determine all groups for a defined user),遍历它们并与 reader 和作者字段字段内容

进行比较

为什么我不喜欢它:

有没有更好的方法呢?尤其是考虑到嵌套组时,$ServerAccess 视图并不是一个真正的选择。

当前代码:

 public boolean isReader(String notesName, String documentID){
    try {
        Vector<String> readers= getAllReaderFieldsValues(documentID);
        if(readers.contains(notesName)){
            return true;
        }
        lotus.notes.addins.DominoServer server = new lotus.notes.addins.DominoServer(DominoUtils.getCurrentSession().getServerName());
        for(String group:(Vector<String>)server.getNamesList(notesName)){
            if (readers.contains(group)){
                return true;
            }
        }
    } catch (NotesException e) {
        //ErrorHandling
    }
    return false;
}

感谢您的帮助

有多种方法可以检查用户是否有权访问文档,但所有这些方法都没有记录(但十年后仍然可用),因此它们不符合您的要求(即 运行在不同的用户上下文或带有“$C1$”列的特殊视图中,...)

A "documented" 做你想做的事情的方法是将用户添加到 reader 字段,如果他的名字不在列表中。无需检查用户是否有访问权限。

我仍然想知道您的场景,因为我不明白您想要实现什么:您正在检查用户是否在允许他访问文档的特定组中。如果用户属于这些组之一,则跳过他的名字。 同时,该用户已从组中删除,并且无法再访问该文档...

为什么不使用组或角色?没有编码,只有管理。你在解决组织问题吗?