我正在使用动作按钮中的JS创建一个新数据库。发生以下顺序:
如果我打开Db,ACL看起来和行为都正确,除了-default-具有Manager的访问级别。
所以我尝试更改我的代码以各种方式为-default-设置访问级别,所有导致异常:
var newACL = db.getACL()
重新创建ACL对象,更改并尝试保存似乎它不认识我作为ACL的管理者。
问:如何更改-default- access from manager?
答案 0 :(得分:2)
获得良好的默认ACL的最简单方法可能是使用模板数据库。模板中方括号中的所有条目都将作为ACL条目复制到新数据库中。
所以在你的模板中你会有
[-Default-]=Author
和[Anonymous]=No Access
会产生-Default-=Author
和Anonymous=No Access
<强>更新强>
看起来更容易。你需要确保输入正确...
使用此功能:
function makeDB(dbName) {
var server = database.getServer();
var you = @UserName();
var dbDir = session.getDbDirectory(server);
var db = dbDir.createDatabase(dbName);
var acl = db.getACL();
acl.createACLEntry(you,6);
if (server != "" && server != you) {
acl.createACLEntry(server,6);
}
var def = acl.getEntry("-Default-");
def.setLevel(3);
acl.save();
}
然后使用以下方法调用该函数:
makeDB("someFancyDBName");
在该函数中,我们确保运行脚本的服务器和运行它的服务器都在ACL中作为管理器(包括本地数据库的情况,在Notes客户机中服务器是空的,在网页预览将是您的用户名。)
像魅力一样工作。如果它对您不起作用,有几件事需要检查:
上一个回答(已废弃):
除此之外,它有点棘手......
您创建新数据库:
var db:Database = [... whatever you have todo here ...];
var acl:Acl = db.getAcl();
// Do whatever you do, don't touch -Default-
acl.save();
acl.recycle();
var dbURL = db.getUrl(); // <-- off my head might be slightly different name
db.recycle();
// Now the real work
var db2 = session.evaluate(dbUrl);
var acl2 = db2.getAcl();
// Change default here;
键入我的头,包含错别字。
这应该有效。让我们知道它是怎么回事