1

我有一个场景,我需要更改用户根本无权访问的实体的某些字段。我想知道是否有某种方法可以在我的插件业务逻辑运行的那一刻增加调用用户权限来更新实体的权限,然后我从他那里取出它。

访问权员工:根本没有帐户访问权(Bryan 当前的访问权)。访问权限管理员:有权更新帐户。

场景:每次“Bryan”创建机会时,都会在创建机会时运行一个插件,该插件会增加一个new_count在系统的整个帐户中命名的字段。(我知道这个场景很愚蠢,没有任何意义,但无论如何)。所以我们在创建线索时放置了一个插件。Bryan 创建了一个潜在客户,在插件中我添加了他的访问权限与 Manager 只是为了运行插件,更新后我把它从他那里拿走。

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

谢谢

4

2 回答 2

3

你有两个选择

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

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

IOrganizationService adminservice = serviceFactory.CreateOrganizationService(null);

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

于 2013-09-30T23:04:36.083 回答
0

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

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

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

IOrganizationService 服务 = serviceFactory.CreateOrganizationService(context.UserId);

  1. 创建具有管理员权限的团队

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

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

  4. 最后,我从团队中选择了用户。

于 2013-10-02T20:48:53.810 回答