冒充并更改CRM 2011访问权限

时间:2013-09-30 21:37:09

标签: c# dynamics-crm-2011 crm

我有一个场景,我需要更改用户根本没有访问权限的实体的某些字段。我想知道在我的插件业务逻辑运行的那一刻是否有某种方法我将调用用户权限增加到更新实体的权限,之后我将其从他身上取出。

访问权限员工:帐户根本没有访问权限(Bryan目前的访问权限)。 Access Right Manager:可以访问更新帐户。

场景:每次“Bryan”创建机会时都会在创建它时运行一个插件,该插件在系统的整个帐户中以一个名为new_count的字段递增。 (我知道这个cenario是没有任何意义的愚蠢,但无论如何)。所以我们设置一个插件来创建领先。 Bryan创建了一个带头,在插件中我添加了他的Access权限管理器只是为了运行插件,更新后我把它从他身上拿走。

我清楚了吗?如果是这样,我希望得到答案!

由于

2 个答案:

答案 0 :(得分:3)

您有两个选择

  1. 在插件注册工具中,注册您的插件以在系统用户上下文中运行

  2. 或者在插件中,使用null作为用户ID创建Web服务。

  3. IOrganizationService adminservice = serviceFactory.CreateOrganizationService(null);

    adminservice方法的所有调用都将作为具有管理员权限的SystemUser执行,因此您可以更新任何实体上的任何字段,无论当前用户权限如何。

答案 1 :(得分:0)

我终于找到了解决问题的方法。

为了正确完成,我必须执行以下步骤。

  1. 我创建两个服务:IOrganizationService administratorService = serviceFactory.CreateOrganizationService(null);(感谢MarioZG);
  2. IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

    1. 创建一个拥有管理员许可的团队

    2. 在我的插件开头使用“administratorService”时,我将主叫用户分配给该团队。

    3. 我使用调用用户做任何我想做的事情(使用我的IOrganizationService命名服务)。

    4. 最后我带走了团队中的用户。