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. 国内外MD5在线解密网站

    -http://www.cmd5.com/english.aspx (457,354,352,282) - http://www.md5crack.com - http://www.hashcheck ...

  2. Codeforces 12D Ball 树形阵列模拟3排序元素

    主题链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<se ...

  3. Palindromes&nbsp;_easy&nbsp;version

    Time Limit: 1Sec  MemoryLimit: 64 MB Submit:165  Solved: 76 [Submit][Status][WebBoard] Description & ...

  4. yarn环境跑mapreduce报错某个container 600s未报告进度超时被杀

    问题: 发现每次reduce阶段跑到98%,相关的container被杀.报出的log大概的意思:container 600s未报告进度超时被杀 解决的方法: 在mapreduce程序里加上 conf ...

  5. 使用SQLServer Audit来监控触发器的启用、禁用情况

    原文:使用SQLServer Audit来监控触发器的启用.禁用情况 使用情景: 有时候会发现在触发器中的业务逻辑没有执行,可能是因为触发器的逻辑错误所引起的.但是有时候却是因为一些触发器被禁用了. ...

  6. MySQL多实例配置(两)

    MySQL操作和维护一个集中的数据库的.它可以由一个单一的执行MySQL在数据库服务器,部署多MySQL示例.这个功能是由mysqld_multi实现.mysqld_multimysqld的服务进程. ...

  7. Cocos2d-X中实现批处理精灵

    使用普通方法实现批处理精灵 在Sprite.h中加入以下的代码 #ifndef __Sprite_SCENE_H__ #define __Sprite_SCENE_H__ #include " ...

  8. OCP-1Z0-051-标题决心-文章2称号

    2. View the Exhibit to examine the description for the SALES table. Which views can have all DML ope ...

  9. 每天一点点java---继承exception类来实现自己的异常类

    package prac_1; /** * <p>Title: 捕获异常和实现自己的异常类</p> * <p>Description: 通过继承Exception类 ...

  10. ubuntu 下安装 matplotlib

    直接使用sudo easy_install matplotlib 报错 ================================================================ ...