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. Directx11学习笔记【一】 最简单的windows程序HelloWin

    声明:本系列教程代码有部分来自dx11龙书及dx11游戏编程入门两本书,后面不再说明 首先,在vs2013中创建一个空的解决方案Dx11Demo,以后的工程都会放在这个解决方案下面.然后创建一个win ...

  2. 有向图的邻接矩阵表示法(创建,DFS,BFS)

    package shiyan; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; publi ...

  3. ios 多线程开发(二)线程管理

    线程管理 iOS和OS X中每一个进程(或程序)由一个或多个线程组成.程序由一个运行main方法的线程开始,中间可以产生其他线程来执行一些指定的功能. 当程序产生一个新线程后,这个线程在程序进程空间内 ...

  4. 我学的是设计模式的视频教程——命令模式vs策略模式,唠嗑

    课程视频 命令模式vs策略模式 唠嗑 课程笔记 课程笔记 课程代码 课程代码 新课程火热报名中 课程介绍 版权声明:本文博主原创文章,博客,未经同意不得转载.

  5. GotoTest

    循环标签跳出循环 public class GotoTest { public static void main(String[] args) { int[][] array={ {1,20,3}, ...

  6. HDU 2008 数字统计

    号码值统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. Kienct与Arduino学习笔记(2) 深度图像与现实世界的深度图的坐标

    转载请注明出处:http://blog.csdn.net/lxk7280 首先,要接触一下KinectOrbit这个摄像机库,这篇文章中有这个库的下载网址和简单的介绍:http://blog.csdn ...

  8. CodeForces 396C 树状数组 + DFS

    本主题开始看到以为段树或树状数组,但是,对于一个节点的有疑问的所有子节点的加权,这一条件被视为树的根,像 然后1号是肯定在第一层中,然后建立一个单向侧倒查,然后记录下来 其中每个节点 层,终于 两个节 ...

  9. centos6.5 64位 openvpn安装配置(转)

    查看系统版本cat /etc/redhat-releaseCentOS release 6.5 (Final) 查看内核和cpu架构uname -rm2.6.32-431.el6.x86_64 x86 ...

  10. java 遍历树节点 同时保留所有的从根到叶节点的路径

    直接在代码.稍后细说 数据结构定义: /** * */ package Servlet; import java.util.ArrayList; import java.util.List; /** ...