如何检查某个用户是否具有读者对文档的访问权限

时间:2019-01-21 12:22:23

标签: java xpages javabeans lotus-notes

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

每个文档都有一个readerfields“读者”和三个authorfields“ creator”,“ authors”,“ AdminAuthor”,最后一个可以忽略,因为每个文档始终只包含“ [Admin]”

当前的想法是获得此处显示的用户组(Determine all groups for a defined user),循环浏览并与“读者”和“作者”字段的字段内容进行比较

为什么我不喜欢它:

  • 使用未公开的API
  • 糟糕的表现

还有更好的方法吗?特别是考虑到嵌套组,因此$ 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;
}

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

一种“有据可查”的方式来做您想要的事情,就是将用户添加到阅读器字段中,如果该用户名尚未在列表中。无需检查用户是否具有访问权限。

我仍然想知道您的情况,因为我不理解您要实现的目标:您正在检查用户是否在特定的组中,该组可以授予他访问文档的权限。如果用户属于这些组之一,则跳过其名称。 同时,该用户已从该组中删除,并且无法再访问该文档...

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

相关问题