我正在尝试删除文档,条件是......
用户在群组中并具有删除权限&组中的每个用户都可以删除该文档。
但问题是,如果我指定的名称也在ACL中明确列出并且没有删除权限。那么它不会检查组权限是否公平。
为此,我试图通过下面给出的代码向那些在组中的用户提供删除权限。
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时发生异常。
即使明确添加的用户也有用户类型= person& Access = ACL中的Manager。
有没有其他方法可以做到这一点?
任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:3)
使用Name
作为起点意味着您将以用户身份获取数据库。除非用户已具有对数据库的Manager访问权限,否则将失败,因为用户无权更新ACL。
您可以使用database
,但请记住,您无法使用sessionAsSigner
方法。相反,您必须使用getCurrentDatabase()
方法才能获得具有签名者权限的数据库。显然,签名者还需要修改ACL的权利。