如何通过SDK在MS Dynamics CRM中检测用户是否具有管理员角色?

ant*_*ton 4 c# sdk dynamics-crm

我在检测公司中的用户是否为管理员方面有一个小问题。通过MS进行此操作的建议方法是查询角色名称 “管理员”等。

事实是,由于某种原因,角色名称似乎已被翻译,因此以不同的语言来查询角色名称有些困难,即“管理员”现在可以是“ ??????”。 ???????”。

*至少在不同版本的CRM上,使用角色ID似乎也不起作用。

有没有人为这样的事情而挣扎?非常感谢您的帮助!

Hen*_*jen 5

可以使用角色模板的ID来标识系统管理员角色。对于内置的安全角色,Dynamics CRM系统都共享相同Guid的,因此您可以简单地对与语言无关的查询进行硬编码。

这里是一个代码示例。(在此示例中,_service应该是实现IOrganizationService接口的对象。)

private static readonly Guid AdminRoleTemplateId = new Guid("627090FF-40A3-4053-8790-584EDC5BE201");

public bool HavingAdminRole(Guid systemUserId)
{
    var query = new QueryExpression("role");
    query.Criteria.AddCondition("roletemplateid", ConditionOperator.Equal, AdminRoleTemplateId);
    var link = query.AddLink("systemuserroles", "roleid", "roleid");
    link.LinkCriteria.AddCondition("systemuserid", ConditionOperator.Equal, systemUserId);

    return _service.RetrieveMultiple(query).Entities.Count > 0;
}
Run Code Online (Sandbox Code Playgroud)