2016-01-19 27 views
3

我在檢測公司中的用戶是否爲管理員時遇到了一個小問題。一個建議的方式來做到這一點的MS是query for a role name「管理員」等如何檢測用戶在MS Dynamics CRM中通過SDK具有管理員角色?

的事情是,它是由於某種原因,角色名稱似乎是翻譯,所以這使得它有點困難用不同的語言查詢它,即什麼是「管理員」現在可以是「администратор」。

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

有沒有人有過這樣的事情? 非常感謝您的幫助!

回答

4

可以使用角色模板的ID來標識系統管理員角色。對於內置安全角色,Dynamics CRM系統都共享相同的Guid,因此您可以簡單地對您的語言不可知的查詢進行硬編碼。

這裏是一個代碼示例。 (在這個例子中_service應該是實現接口的一個對象。)

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

謝謝Henk,那對我有幫助! – anton

相關問題