??? 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; }
??????? }
??? }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
