我正在研究MS CRM 2011中的Notes。
我在许多实体中扮演很多角色。 我想要基于角色的安全性来记录任何实体记录。
让我解释一下我想要的东西:
假设我有一个实体,即E1。 角色R1和R2具有对E1的读写访问权限。
但我希望拥有角色R2的用户只能上传和查看实体E1的任何记录的注释。
希望现在我的要求对你们所有人都很清楚。
请建议我如何使用MS CRM 2011实现它。
答案 0 :(得分:1)
我可以想到两种方法来做到这一点。
您可以在创建/更新注释(注释)时创建插件,并检查注释是否与实体E1相关,并检查进行更改的用户的角色,看看他们是否只有R2角色。如果是这种情况,您可以使用“您没有权限编辑/创建这些记录”之类的消息抛出InvalidPluginExecutionException
。
您可以尝试使用基于角色的表单或JS来隐藏R1用户的备注区域。
你可能想要使用#1&的组合。 #2。用户仍然可以通过高级查找来访问笔记,因此可以编辑这些笔记。该插件也可以防止这种边缘情况。
*编辑
还有一些事情可以处理高级查找记录。您可以通过here所述的不支持的方法从高级查找中删除注释实体。
否则,如果您想要阻止这些结果显示,并且您希望保持支持,则还可以执行一项操作。您可以在注释实体的Post-RetrieveMultiple上编写插件,以直接从返回结果中去除结果。但是有一些缺点。
每次在实体上调用检索倍数时,您都在执行插件。所以这段代码需要尽可能高效,因为最终用户在检索这些记录时会发现这种延迟。
高级查找等内容会显示奇怪的结果。例如,如果您的分页设置为50条记录并且您删除10条记录,则它们只会在其页面上看到40条记录,并且总记录数将包括您要删除的记录。
答案 1 :(得分:0)
通过角色我不知道如何做到这一点,因为您配置了对通用的注释的访问权限,因此适用于所有实体。您必须使用Javascript在DOM中导航进行访问。检查一个例子:
document.getElementById("notescontrol").contentWindow.document.getElementById("NotesTable")
您可以在浏览器中使用develeper工具进行检查。