Xpages setCanDeleteDocuments()Lotus Notes ACL
我正在尝试删除文档,其中条件是 用户在组中且具有删除权限的位置&组中的每个用户都可以删除文档 但问题是,如果我指定的名称也在ACL中明确列出,并且没有删除权限,那么它就不会检查组权限,这是足够公平的 为此,我试图通过下面给出的代码将删除权限授予分组中的用户Xpages setCanDeleteDocuments()Lotus Notes ACL,xpages,lotus-notes,acl,Xpages,Lotus Notes,Acl,我正在尝试删除文档,其中条件是 用户在组中且具有删除权限的位置&组中的每个用户都可以删除文档 但问题是,如果我指定的名称也在ACL中明确列出,并且没有删除权限,那么它就不会检查组权限,这是足够公平的 为此,我试图通过下面给出的代码将删除权限授予分组中的用户 var acl:NotesACL=database.getACL(); var entry:NotesACLEntry=acl.getFirstEntry(); if(entry!=null) { var user:NotesACLEntry
var acl:NotesACL=database.getACL();
var entry:NotesACLEntry=acl.getFirstEntry();
if(entry!=null)
{
var user:NotesACLEntry=acl.getEntry(@UserName());
if(user.isCanDeleteDocuments()==false)
{
user.setCanDeleteDocuments(true);
acl.save();
}
}
显示错误的地方,比如,
调用方法NotesACL.save()null时发生异常
即使是显式添加的用户,ACL中的用户类型也为person&Access=Manager
还有别的办法吗
任何帮助都将不胜感激。
提前感谢。使用
数据库作为起点意味着您将以用户的身份获取数据库。除非用户已经拥有对数据库的Manager访问权限,否则此操作将失败,因为用户没有更新ACL的权限
您可以使用sessionAsSigner
,但请记住,您不能使用getCurrentDatabase()
方法。相反,您必须使用getDatabase(server,filePath)
方法才能获得具有签名者权限的数据库。显然,签名者还需要修改ACL的权限。使用数据库作为起点意味着您将以用户的身份获取数据库。除非用户已经拥有对数据库的Manager访问权限,否则此操作将失败,因为用户没有更新ACL的权限
您可以使用sessionAsSigner
,但请记住,您不能使用getCurrentDatabase()
方法。相反,您必须使用getDatabase(server,filePath)
方法才能获得具有签名者权限的数据库。显然,签名者还需要修改ACL的权限