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. 杭电1171 Big Event in HDU(母函数+多重背包解法)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. linux 脚本測试网络速度

    example: ./netspeed eth0 1 #!/bin/bash 2   3 INTERVAL="1"  # update interval in seconds   ...

  3. [LeetCode202]Happy Number判断一个数是不是happy number

    题目: Write an algorithm to determine if a number is "happy". A happy number is a number def ...

  4. iOS开发:多线程技术概述

    一.概述 线程(thread):用于指代独立执行的代码段. 进程(process):用于指代一个正在运行的可执行程序,它可以包含多个线程. 任务(task):用于指代抽象的概念,表示需要执行工作. 多 ...

  5. Swift伟大的编程语言数据采集

    Swift 2048 https://github.com/austinzheng/swift-2048 苹果官方Swift文档<The Swift Programming Language&g ...

  6. 8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】

    话说得生疼.我已经想到了17那年,那是一年的时间!我在这里7.24我认为这是我的生日 结果到处宣传 ,首页疑问发现自己是错的生日 按照农历计勒把我羞辱. 不依照原农历7.24的  今天的国家今天的日历 ...

  7. mapxtreme C# 完美车辆动态轨迹展示

    演示程序请在 http://pan.baidu.com/s/1jG9gKMM#dir/path=%2F%E4%BA%A7%E5%93%81%2FDemos 找 Trajectory.rar 轨迹回放功 ...

  8. jquery animate的递归调用

    去年面试过一家做网站的 公司,看了一下他们的案例,看懂一个蛮有意思的 ,一个房地产的官网,是用flash做的.感觉不错. 于是,闲暇之际,简单的jquery 模仿做了一下.下面是我的效果图.脚本也没啥 ...

  9. VS2008让自己掌控的定义编译项目后,自己主动添加到工具箱

    在VS2008中,假设在项目里写了一个用户控件.编译后这个控件是不会自己主动出现到工具箱的.按例如以下设置就能够解决问题 工具=>选项=>Windows窗口设计器=>常规=>A ...

  10. Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作

    前段时间我们游戏server升级到开发环境Java8,这些天,我再次server的线程模型再次设计了一下,耗费Lambda表情. LambdaJava代码.特别是丑陋不堪的匿名内部类,这篇文章主要就是 ...