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

        }

    }

crm操作安全角色的更多相关文章

  1. Windows Server 2016-FSMO操作主机角色介绍

    FSMO五个操作主机角色 1.林范围操作主机角色(两种): 架构主机角色:Schema Master 域命名主机角色:Domain Naming Master 2.域范围操作主机角色(三种): 域范围 ...

  2. crm操作业务部门

    using System;     using System.Linq;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messag ...

  3. 基于吉日嘎底层架构的Web端权限管理操作演示-角色管理

    上一篇介绍了用户管理,这篇来介绍角色管理,这是权限管理的核心部分,因为我们的权限管理系统是基于角色的,有个高大上的英文名叫RBAC(Role Based Acccess Control). 下面的这段 ...

  4. crm操作货币实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  5. crm操作权限

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Query;     using System.Colle ...

  6. crm操作知识库文章实体

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

  7. crm操作观点

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  8. 2012 - AD FSMO操作主机角色 -- 作用

    林范围:(林中唯一) 架构主机角色(Schema Master) 定义所有域对象属性 域命名主机角色(Domain Naming Master) 控制域林内域的添加或删除(必须为GC)   域范围:( ...

  9. crm操作产品实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

随机推荐

  1. 集合hashCode()方法和equals()办法

    1.哈希码:         Object中的HashCode方法会返回该对象的的内存真实地址的整数化表示,这个形象的不是真正抵制的整数值就是哈希码. 2.利用哈希码向集合中插入数据的顺序?     ...

  2. Extjs Web Desktop申请书

    今天我Web Desktop应用基本完成.多语言支持.现有asp,php,jsp版本号. 废话拍了几张照片让大家有一个直观的了解: watermark/2/text/aHR0cDovL2Jsb2cuY ...

  3. 如何更改IE查看源代码菜单使用的HTML编辑器

    一:打开注册表。 二:打开"HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/INTERNET EXPLORER"或"HKEY_LOCAL_MAC ...

  4. [Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]

    原文:[Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]  我的文章一定要做到对读者负责,否则就是失败的文章  -- ...

  5. Android setDisplayOptions 具体的使用说明

    Android有几个地方使用位计算.实例Intent Flags,它们的定义View onMeasure(int widthMeasureSpec, int heightMeasureSpec),并且 ...

  6. std::list.pop_back() 弹空了列表导致的崩溃

    core文件输出: (gdb) bt # # ) at xxxxx/sql/signal_handler.cc: # <signal handler called> # # # # # 0 ...

  7. 5、Cocos2dx 3.0小游戏开发的例子寻找测试三个简单的介绍和总结

    繁重的劳动开发商,当转载请注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 測试例子简单介绍 Cocos2d-x 为我们提供了 ...

  8. 实现android里面WebView显示内容

    在日常学习.我们会看到,当手机应该检查注册协议.单击协议时,以查看内部协议的全部内容! 以下给大家看看实现的过程: 首先贴show_xy.XML代码: <WebView android:layo ...

  9. Oracle左连接、右连接、全外连接以及(+)号用法(转)

    +:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle  外连接(OUTER JOIN) 左外连接(左边的表不 ...

  10. 浅析pinyin4j源码 简单利用pinyin4j对中文字符进行自然排序(转)

    pinyin4j项目  官网地址 http://pinyin4j.sourceforge.net/ 我们先把资源下载下来,连同源码和jar包一起放入工程.如下图: 接下来在demo包下,我们写一个测试 ...