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

标签 c# sdk dynamics-crm

我在检测公司用户是否为管理员时遇到了一个小问题。 MS 建议的方法是 query for a role name “管理员”等

但是 问题是由于某种原因,角色名称似乎是翻译,所以用不同的语言查询它有点困难,即,“管理员”现在可以是“администратор”。

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

有没有人遇到过这样的事情? 非常感谢您的帮助!

最佳答案

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

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

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;
}

关于c# - 如何通过 SDK 检测用户在 MS Dynamics CRM 中是否具有管理员角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881791/

相关文章:

c# - 在 C# 中调用 javascript 函数

c# - 如何将异步事件处理程序连接到 WinRT 中的非异步事件?

dynamics-crm - MS CRM 查询表达式 带 CRMBoolean 类型的条件表达式

c# - 从 Windows 8 Metro 风格应用建立与 Dynamics CRM Online Web 服务的连接

android - Android SDK 的 UIAutomator Viewer 返回空白截图

plugins - QualifyLeadRequest 触发 CRM 2015 中的重复检测

c# - 从继承具体类对抽象类的类型推断

c# - Htmlagilitypack - 获取文本内的所有文本+链接

android - 在 Android Studio :Whitespaces in directory location 中更改 SDK 位置

C# - 指纹生物识别