2014-01-14 116 views
1

我想确定当前用户是否具有删除权限。我可以检查这个人的ACLEntry,但是如果他们从一个或多个组获得他们的访问权限,这将意味着循环访问ACL中的组名,并检查他们是否具有删除权,然后查看用户是否是组。这可能是一个相当密集的过程。我听说在分机里可能有一种方法,但一直没能找到任何东西。 确定用户是否可以删除文档的最佳方法是什么?有没有一种方法来确定是否删除用户?

+0

伟大的问题,会为我节省很多时间。 –

回答

6

适应this example咯,这里将允许您查询此特权的函数(和其他几个人,良好的指标):

function getUserPrivileges() { 
    var privileges = database.queryAccessPrivileges(context.getUser().getDistinguishedName()); 
    return { 
     createDocuments: ((privileges & NotesDatabase.DBACL_CREATE_DOCS) > 0), 
     deleteDocuments: ((privileges & NotesDatabase.DBACL_DELETE_DOCS) > 0), 
     readPublicDocuments: ((privileges & NotesDatabase.DBACL_READ_PUBLIC_DOCS) > 0), 
     writePublicDocuments: ((privileges & NotesDatabase.DBACL_WRITE_PUBLIC_DOCS) > 0) 
    }; 
} 

如果您添加上面的脚本库,那么任何代码引用该库可以包括诸如以下逻辑:

if (getUserPrivileges().deleteDocuments) { 
    // delete something… 
} 

为了进一步增强灵活性,你可以调整getUserPrivileges()功能的特定数据库用户尝试从,而不是删除在传递一个手柄总是假设它是最新的。

+1

蒂姆 - 再次感谢,知道它必须在那里找不到它。 –

相关问题