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