0

我正在处理 MS CRM 2011 中的注释。

我在许多实体中担任许多角色。我希望基于角色的安全性来记录任何实体记录。

让我解释一下我想要什么:

假设我有一个实体,即 E1。角色 R1 和 R2 对 E1 具有读写权限。

但我希望具有角色 R2 的用户只能上传和查看实体 E1 的任何记录的注释。

希望现在我的要求对你们所有人都很清楚。

请建议我如何使用 MS CRM 2011 实现它。

4

2 回答 2

1

我可以想到两种方法来做到这一点。

  1. 您可以在创建/更新注释(注释)时创建一个插件,并检查注释是否与实体 E1 相关,并检查进行更改的用户的角色,看看他们是否只有 R2 角色。如果是这种情况,您可以抛出InvalidPluginExecutionException一条消息,例如“您无权编辑/创建这些记录”。

  2. 您可以尝试使用基于角色的表单或 JS 来隐藏 R1 用户的注释区域。

您可能想使用#1 和#2 的组合。用户仍然可以通过高级查找访问笔记,从而能够编辑这些笔记。该插件也将防止这种边缘情况。


*编辑

您可能还可以处理更多的事情来处理高级查找记录。您可以通过此处描述的不受支持的方法从高级查找中删除注释实体。

否则,如果您想完全阻止这些结果出现,并且您想继续获得支持,您还可以做一件事。您可以在注释实体的 Post-RetrieveMultiple 上编写一个插件,以直接从返回结果中剥离结果。不过,这有几个缺点。

  1. 每次在实体上调用检索倍数时,您都在执行插件。因此,此代码需要尽可能高效,因为最终用户在检索这些记录时会注意到延迟。

  2. 高级查找之类的东西会显示奇怪的结果。例如,如果您的分页设置为 50 条记录,而您删除了 10 条记录,他们将只能在其页面上看到 40 条记录,并且总记录数将包括您要删除的记录。

于 2013-05-27T14:05:34.673 回答
0

通过角色我不知道如何做到这一点,因为您配置了对注释通用的访问,因此适用于所有实体。您必须使用在 DOM 中导航的 Javascript 进行访问。检查一个例子:

document.getElementById("notescontrol").contentWindow.document.getElementById("NotesTable")

您可以借助浏览器中的开发工具进行检查。

于 2013-05-27T13:59:20.910 回答