首页 > 代码库 > crm操作安全角色

crm操作安全角色

    using System;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Crm.Sdk.Messages;
    using System.Collections.Generic; 

    /// <summary>
    /// 安全角色
    /// </summary>
    public class RoleHelper
    {
        public static readonly string entityName = "role";
        public Guid roleId = Guid.Empty;

        /// <summary>
        /// 创建安全角色
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="name">角色名称</param>
        /// <param name="unitId">业务部门</param>
        public void Create(IOrganizationService service,string name,Guid unitId)
        {
            Entity en = new Entity() { LogicalName = entityName };
            en["name"] = name;
            en["businessunitid"] = new EntityReference() { LogicalName = "businessunit",Id = unitId };
            roleId = service.Create(en);
        }

        /// <summary>
        /// 修改安全角色
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="name">角色名称</param>
        /// <param name="unitId">业务部门</param>
        public void Update(IOrganizationService service, string name, Guid unitId)
        {
            Entity en = new Entity() { LogicalName = entityName,Id = roleId };
            en["name"] = name;
            en["businessunitid"] = new EntityReference() { LogicalName = "businessunit", Id = unitId };
            service.Update(en);
        }

        /// <summary>
        /// 给安全角色添加权限
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="businessUnitId">业务部门id</param>
        /// <param name="privilegeId">权限id</param>
        public void AddPrivilegesRole(IOrganizationService service,Guid businessUnitId,Guid privilegeId)
        {
            AddPrivilegesRoleRequest request = new AddPrivilegesRoleRequest();
            request.RoleId = roleId;
            RolePrivilege rp = new RolePrivilege();
            //Basic: 1/4,Local : 1/2,Deep : 3/4,Global: 4/4 组织
            rp.Depth = PrivilegeDepth.Basic;
            //权限
            rp.PrivilegeId = privilegeId;
            //业务部门
            rp.BusinessUnitId = businessUnitId;
            //权限
            request.Privileges = new RolePrivilege[] { rp };

            service.Execute(request);
        }

        /// <summary>
        /// 给安全角色移除权限
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="privilergeId">安全角色</param>
        public void RemovePrivilegeRole(IOrganizationService service,Guid privilergeId)
        {
            RemovePrivilegeRoleRequest roleRequest = new RemovePrivilegeRoleRequest();
            roleRequest.RoleId = roleId;
            roleRequest.PrivilegeId = privilergeId;
            service.Execute(roleRequest);
        }

        /// <summary>
        /// 安全角色替换权限(删除以前的角色,添加现有的角色)
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="businessUnitId">业务部门id</param>
        /// <param name="privilegeId">权限id</param>
        public void ReplacePrivilegeRpole(IOrganizationService service,Guid businessUnitId, Guid privilegeId)
        {
            ReplacePrivilegesRoleRequest roleRequest = new ReplacePrivilegesRoleRequest();
            roleRequest.RoleId = roleId;
            RolePrivilege rp = new RolePrivilege();
            //Basic: 1/4,Local : 1/2,Deep : 3/4,Global: 4/4 组织
            rp.Depth = PrivilegeDepth.Basic;
            //权限
            rp.PrivilegeId = privilegeId;
            //业务部门
            rp.BusinessUnitId = businessUnitId;
            //权限
            roleRequest.Privileges = new RolePrivilege[] { rp };

            service.Execute(roleRequest);
        }

        /// <summary>
        /// 检索分派给指定角色的权限
        /// </summary>
        /// <param name="service">服务</param>
        public void SearchPrivilegeRole(IOrganizationService service)
        {
            RetrieveRolePrivilegesRoleRequest request = new RetrieveRolePrivilegesRoleRequest();
            request.RoleId = roleId;

            ReplacePrivilegesRoleResponse response = (ReplacePrivilegesRoleResponse)service.Execute(request);
            if (response != null && response.Results != null) {
                ParameterCollection result = response.Results;
            }
        }

        /// <summary>
        /// 删除安全角色
        /// </summary>
        /// <param name="service">服务</param>
        public void Delete(IOrganizationService service)
        {
            service.Delete(entityName, roleId);
        }
    }