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. 大约SQL现场“这包括”与“包括在”字符串的写法

     1.字段查找表值"这包括"方法一字符串的所有记录 如果表中有一name场,查询name这包括"乔 - 史密斯"所有记录.能够写sql: Stirng st ...

  2. uploadify控制 上传图片到百度云存储

    最近使用uploadify 控制图片上传到百度网盘....总的想法是 招待会uploadify获取文件传入后台,调用百度云存储api上传到百度网盘,返回url 联系.送存储在数据库中的链接.因此,我们 ...

  3. linux内核数据包转发流程(三)网卡帧接收分析

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 每一个cpu都有队列来处理接收到的帧,都有其数据结构来处理入口和出口流量,因此,不 ...

  4. 终结者单身——setAccessible(true)

    首先看一下"传说"Singleton模式 package go.derek; public class Singleton{ public static int times; pr ...

  5. 原产地政策,jsonp跨域

           一.同源策略         同源策略(Same origin policy)是一种约定,它是浏览器最核心也最主要的安全功能,假设缺少了同源策略,则浏览器的正常功能可能都会受到影响.能够 ...

  6. JSON 数据使用

    当用不同的数据的模板需要更换时.假设数据点的量.使用json非常方便. json物: var JSONObject= { "name":"Bill Gates" ...

  7. StackExchange.Redis 使用 - 事件(五)

    ConnectionMultiplexer 可以注册如下事件 ConfigurationChanged - 配置更改时 ConfigurationChangedBroadcast - 通过发布订阅更新 ...

  8. WinJS Clipboard

    //剪贴板 方法1 window.uexClipboard = { copy: null, getContent: null, cbGetContent: null }; uexClipboard.c ...

  9. 打印到类阵列的给定序列的所有排列的n皇后问题

    题目例如以下:Given a collection of numbers, return all possible permutations. For example, [1,2,3] have th ...

  10. iOS UISearchDisplayController学习笔记

    UISearchDisplayController和UISearchBar一起使用用来管理UISearchBar和搜索结果的展示.UISearchDisplayController提供了显示搜索结果的 ...