crm操作許可權

來源:互聯網
上載者:User

標籤: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; }
        }
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.