XPages(Domino)中相应的访问权限和显示/隐藏按钮

时间:2018-01-15 16:53:59

标签: xpages lotus-notes lotus-domino

我希望在当前用户拥有“作者”权限或当前用户是具有这些权限的组成员时显示一个按钮。

现在I found this approach

这就是我尝试在我的按钮的rendered属性中实现它的方式:

var cxt = com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent();
var isEditable = cxt.isDocEditable(currentDocument.getDocument());
return isEditable;

在我的情况下,isEditable始终是真的。

有人可以告诉我,我做错了吗?

提前谢谢。

修改

我似乎愚蠢地跳过Author访问权限并仅使用ManagerEditorReader进行了测试。

非常感谢@Paul Stephen Withers和@Per Henrik Lausten带领我走向解决方案。

如需进一步参考,如果有人需要,我可以根据文档的读/写模式显示/隐藏编辑/隐藏保存按钮:

// Save button
var showButton = currentDocument.isEditable();
var contxt = com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent();
var isEditable = contxt.isDocEditable(currentDocument.getDocument());
return (isEditable && showButton);

// Edit button
var showButton = !currentDocument.isEditable();
var contxt = com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent();
var isEditable = contxt.isDocEditable(currentDocument.getDocument());
return (isEditable && showButton);

2 个答案:

答案 0 :(得分:2)

确保您使用具有作者访问权限的用户在数据库的ACL中进行测试。

对于具有编辑访问权限的用户,您的代码将始终返回。

答案 1 :(得分:0)

另一种方法是从userBean返回用户的accessLevel,并在用户具有EDITOR访问权限或更高权限时呈现该按钮。您还需要测试具有AUTHOR访问权限的用户,并进行这些进一步测试以查看它们是否位于文档中的AUTHORS-TYPE字段中(以下示例中的DocAuthor字段)。

以下代码可用于两种情况,并且位于[编辑]按钮的呈现属性中:

if (document1.isEditable()){
    return false;
} else {
    var editor = userBean.accessLevel >= lotus.domino.ACL.LEVEL_EDITOR;
    var author = userBean.accessLevel >= lotus.domino.ACL.LEVEL_AUTHOR;
    var isUser = @IsMember(document1.getItemValue("DocAuthor"),userBean.canonicalName);

    if((editor) || (isUser && author)) {
        return true;
    } else {
        return false;
    }
}