標籤:crm操作許可權 crm查詢實體的許可權 crm查詢一個使用者具有的許可權 crm檢索系統中定義的特權集
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Collections.Generic;
using Microsoft.Crm.Sdk.Messages;
/// <summary>
/// 許可權
/// </summary>
public class PrivilegeHelper
{
public static readonly string entityName = "privilege";
/// <summary>
/// 查詢一個實體的許可權
/// 一般的實體都有8個基本的許可權
/// </summary>
public List<Privilege> SearchPrivilegeByEntityName(IOrganizationService service, string name)
{
List<Privilege> list = new List<Privilege>();
//一般的實體都有8個許可權,這裡假設實體是:account
//prvCreateAccount: 建立客戶,prvReadAccount: 讀取客戶記錄,prvWriteAccount: 修改客戶
//prvDeleteAccount: 刪除客戶,prvAppendAccount: 追加,prvAppendToAccount: 追加到
//prvAssignAccount: 分配客戶,prvShareAccount: 共用客戶
QueryExpression query = new QueryExpression();
query.EntityName = entityName;
query.ColumnSet = new ColumnSet("name");
query.Criteria.AddCondition(new ConditionExpression("name",ConditionOperator.Like,"prv%" + name));
EntityCollection ec = service.RetrieveMultiple(query);
if (ec != null && ec.Entities.Count > 0)
{
foreach(Entity en in ec.Entities)
{
Privilege p = new Privilege();
p.id = en.Id;
p.name = en["name"].ToString();
list.Add(p);
}
}
return list;
}
/// <summary>
/// 通過id查詢一個許可權
/// </summary>
/// <param name="service">服務</param>
/// <param name="privilegeId">許可權id</param>
public Privilege SearchPrivilegeById(IOrganizationService service,Guid privilegeId)
{
Entity en = service.Retrieve(entityName, privilegeId, new ColumnSet("name"));
Privilege p = new Privilege() { id = privilegeId };
p.name = en["name"].ToString();
return p;
}
/// <summary>
/// 查詢一個使用者具有的許可權
/// </summary>
/// <param name="service">服務</param>
/// <param name="userId">使用者</param>
public void SearchPrivilegeByUserId(IOrganizationService service,Guid userId)
{
RetrieveUserPrivilegesRequest request = new RetrieveUserPrivilegesRequest();
request.UserId = userId;
RetrieveUserPrivilegesResponse response = (RetrieveUserPrivilegesResponse)service.Execute(request);
if (response.RolePrivileges != null)
{
RolePrivilege[] arrayResult = response.RolePrivileges;
}
}
/// <summary>
/// 檢索系統中定義的特權集
/// </summary>
/// <param name="service">服務</param>
public List<Privilege> SearchAllPrivilege(IOrganizationService service)
{
List<Privilege> list = new List<Privilege>();
RetrievePrivilegeSetRequest request = new RetrievePrivilegeSetRequest();
RetrievePrivilegeSetResponse response = (RetrievePrivilegeSetResponse)service.Execute(request);
if (response.EntityCollection != null)
{
EntityCollection ec = response.EntityCollection;
if (ec != null && ec.Entities.Count > 0)
{
foreach (Entity en in ec.Entities)
{
Privilege p = new Privilege();
p.id = en.Id;
p.name = en["name"].ToString();
list.Add(p);
}
}
}
return list;
}
public class Privilege
{
public Guid id { get; set; }
public string name { get; set; }
}
}