獲得良好的默認ACL的最簡單方法可能是使用模板數據庫。模板中的方括號中的所有條目將作爲ACL條目複製到新數據庫中。
所以在你的模板,你將有
[-Default-]=Author
和[Anonymous]=No Access
導致
-Default-=Author
和Anonymous=No Access
在新的DB
更新 更容易,它看起來。你需要確保獲得正確的條目...
使用此功能:
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客戶機中服務器是空的,並且在Web預覽中將是您的用戶名)。
工程就像一個魅力。如果它不適合你,有幾件事要檢查:
- 它是否在本地工作(不涉及服務器)?
- 控制檯上有錯誤嗎?
- 什麼訪問級別你必須在服務器ECL
- 檢查「最大互聯網接入」數據庫
以前的答案(過時)的:
比其他這是一個小技巧...
您創建新的數據庫:
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;
鍵入我的頭,包含錯別字。
這應該工作。讓我們知道它是怎麼回事
問題是,使用模板真的不會在這種情況下工作。我需要直接使用ACL。我只是嘗試了另一種選擇。將自己添加爲具有管理員權限的ACL條目後,我保存了ACL和db.recycle。然後,我打開數據庫var newDB =等,並檢索了顯示默認和我自己作爲管理器的ACL。我將-default-更改爲Author,並嘗試保存ACL並再次失敗。如果我將代碼註釋掉以將-default-更改爲author,那麼所有操作都會按照我所期望的那樣工作,但將-default- = Manager留給DB,我不能將其留在。 –
我加入再循環的VARS ACL將AclEntry和DB的,然後 –
我加入VARS ACL將AclEntry和DB,然後 變種DB2的再循環:=的NotesDatabase dir.openDatabase(文件路徑+文件名); var acl2:NotesACL = targetDB2.getACL(); var aclEntry2:NotesACLEntry = acl2.getEntry(「 - default-」); 然後設置aclEntry2.setLevel(3)加上一些其他條目 - 這些都似乎工作,直到我嘗試acl2.save(),它失敗了,我得到了一個異常錯誤。通過dbURL打開Db將無法正常工作,但我認爲這是我的服務器的問題,因爲我曾在此服務器上嘗試過這種方法,但無法正常工作,但將數據庫打開爲新的變量也應該執行相同的操作。 –