通过Java代码添加到组的用户访问权限未正确计算

问题描述 投票:1回答:2

当通过从Xpage触发的Java编辑组成员时,在计算db访问时忽略更改,直到该组被手动保存在Domino目录中。该小组位于援助目标中

对于xpage应用程序,我希望poweruser能够通过xpage修改组:

在安全的情况下,xpages从domino目录DB获取相应的文档,将成员列表写入“Members”-item并保存文档(参见下面的代码)。

该组用于授予对数据库的作者访问权限。当尝试使用新添加的用户访问Db时,访问被拒绝,直到我通过Notes-Client手动打开组文档,更改为编辑模式并安全(不更改任何数据)。使用刚刚删除的用户时,它仍然可以访问。手动保存组后,一切都立即起作用。

尝试使用新组(创建文档,设置所有项目并保存)和所有现有项目(获取现有,工作组并更改),没有区别

//Group is a very basic bean that holds the data changed by the user on the
//xpage. no logic, just getters/setters

public void save(Group group) {
            if (group.getID().equals("")) {
//new Group
                doc = pnab.createDocument();
                doc.replaceItemValue("Form", "Group");
                doc.replaceItemValue("Type", "Group");
                doc.replaceItemValue("Grouptype", "2");
                doc.replaceItemValue("Grouptitle", "2");
                doc.replaceItemValue("ListCategory", con.getName());
                doc.replaceItemValue("$ConflictAction", "1");
                doc.replaceItemValue("$Group_Main", "0");
                doc.replaceItemValue("DocumentAccess", "[Groupmodifier]");
                doc.getFirstItem("DocumentAccess").setAuthors(true);
                replaceValues(group, doc);
                doc.save();
                group.setID(doc.getUniversalID());
            } else {
//existing group
                doc = pnab.getDocumentByUNID(group.getID());
                replaceValues(group, doc);
                doc.save();
            }
    }
private void replaceValues(Group group, Document doc) throws NotesException {
        doc.replaceItemValue("comment", group.getComment());
        doc.replaceItemValue("ListName", group.getNotesName());
        Vector<String> members=new Vector<String>(group.getMembers());
        Collections.sort(members, new StringComparator(true)); // sorts the memberlist alphabetical, ignores case
        doc.replaceItemValue("Members", members);
    }

我假设需要进行一些更新/缓存清除等。任何建议做什么/在哪里看?

Allready已经调查了Dominodirectoy模板中的group-form,没有什么特别之处。还从openNTF.org检查了NotesGroupManager LS-Libary,也没什么特别的。可能是java特定的问题

java xpages lotus-domino
2个回答
2
投票

将属性Names添加到您的成员项目:

Item itemMembers = doc.replaceItemValue("Members", members);
itemMembers.setNames(true);

它将成员的条目转换为有效的Names值,Domino可以为访问权限处理这些值。


4
投票

要使更新的组工作,您需要更新Domino目录中的一些视图(names.nsf)。刷新以下视图应该有所帮助(假设namesDb是服务器上的names.nsf实例):

namesDb.getView("($LDAPCN)").refresh();
namesDb.getView("($Users)").refresh();
namesDb.getView("($ServerAccess)").refresh();
namesDb.getView("($VIMPeople)").refresh();
© www.soinside.com 2019 - 2024. All rights reserved.