第一种:普通的RetrieveMultiple方式

//功能说明: 获取当前用户是否具有该角色
//备注:
//参数说明:
//          (string/string[])roleName: 角色名称(列表)
//返回值说明(return):
//          bool:
function CurrentUserHasRoles(roleName) {var xml = "" +"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +Xrm.Page.context.getAuthenticationHeader() +" <soap:Body>" +" <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +" <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +" <q1:EntityName>role</q1:EntityName>" +" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +" <q1:Attributes>" +" <q1:Attribute>name</q1:Attribute>" +" </q1:Attributes>" +" </q1:ColumnSet>" +" <q1:Distinct>false</q1:Distinct>" +" <q1:LinkEntities>" +" <q1:LinkEntity>" +" <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +" <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +" <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +" <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +" <q1:JoinOperator>Inner</q1:JoinOperator>" +" <q1:LinkEntities>" +" <q1:LinkEntity>" +" <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +" <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +" <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +" <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +" <q1:JoinOperator>Inner</q1:JoinOperator>" +" <q1:LinkCriteria>" +" <q1:FilterOperator>And</q1:FilterOperator>" +" <q1:Conditions>" +" <q1:Condition>" +" <q1:AttributeName>systemuserid</q1:AttributeName>" +" <q1:Operator>EqualUserId</q1:Operator>" +" </q1:Condition>" +" </q1:Conditions>" +" </q1:LinkCriteria>" +" </q1:LinkEntity>" +" </q1:LinkEntities>" +" </q1:LinkEntity>" +" </q1:LinkEntities>" +" </query>" +" </RetrieveMultiple>" +" </soap:Body>" +"</soap:Envelope>" +"";var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);xmlHttpRequest.setRequestHeader("SOAPAction", " http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");xmlHttpRequest.setRequestHeader("Content-Length", xml.length);xmlHttpRequest.send(xml);var resultXml = xmlHttpRequest.responseXML;var bVisible = false;var roles = resultXml.selectNodes("//BusinessEntity/q1:name");if (roles != null) {var arr = new Array();if (roleName.constructor == Array) {arr = roleName;} else {arr[0] = roleName;}for (var i = 0; i < roles.length; i++) {for (var j = 0; j < arr.length; j++) {if (roles[i].text == arr[j]) {bVisible = true;break;}}if (bVisible == true) {break;}}}return bVisible;
}

  第二种: OData方式

//功能说明: 获取当前用户是否具有该角色
//备注:
//参数说明:
//          roleName: 角色名称
//返回值说明(return):
//          bool:function CurrentUserHasRole(roleName) {//为了避免OData中文检索不出这种问题,使用encodeURIComponent来encode;var serverUrl = Xrm.Page.context.getServerUrl();var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/";oDataEndpointUrl += "RoleSet?$top=1&$filter=Name eq " + encodeURIComponent (roleName);var service = GetRequestObject();if (service != null) {service.open("GET", oDataEndpointUrl, false);service.setRequestHeader("X-Requested-Width", "XMLHttpRequest");service.setRequestHeader("Accept", "application/json, text/javascript, */*");service.send(null);var requestResults = eval('(' + service.responseText + ')').d;if (requestResults != null && requestResults.results.length == 1) {var role = requestResults[0];var id = role.RoleId;var currentUserRoles = Xrm.Page.context.getUserRoles();for (var i = 0; i < currentUserRoles.length; i++) {var userRole = currentUserRoles[i];if (GuidsAreEqual(userRole, id)) {return true;}}}}return false;
}//功能说明: 获取请求体
//备注:
//参数说明(Parameters):
//返回值说明(return):
//          RequestObject
function GetRequestObject() {if (window.XMLHttpRequest) {return new window.XMLHttpRequest;}else {try {return new ActiveXObject("MSXML2.XMLHTTP.3.0");}catch (ex) {return null;}}
}//功能说明: 比较两个Guid
//备注:
//参数说明(Parameters):
//         guid1:Guid
//         guid2: Guid
//返回值说明(return):
//          bool:
function GuidsAreEqual(guid1, guid2) {var isEqual = false;if (guid1 == null || guid2 == null) {isEqual = false;}else {isEqual = guid1.replace(/[{}]/g, "").toLowerCase() == guid2.replace(/[{}]/g, "").toLowerCase();}return isEqual;
}

  

转载于:https://www.cnblogs.com/Republic/archive/2011/08/24/MSCRM_2011_CurrentUser_Has_Roles_method.html

MSCRM2011 Current User has Role 【判定当前用户角色方法】相关推荐

  1. php里注册管理员账号,WordPress中创建用户角色的相关PHP函数使用详解

    这篇文章主要介绍了WordPress中创建用户角色的相关函数使用,在WordPress的多用户模式中不同角色拥有不同的权限,需要的朋友可以参考下 WordPress 默认有 "订阅者&quo ...

  2. mysql8 安全机制(修改密码、 Role功能、用户管理)

    文章目录 一.MySQL8密码恢复 二.mysql8.0 特性 (一) Role功能 1. 创建角色并授予权限 2. 定义强制性角色 3. 激活角色 4 . 查看角色权限 5. 撤销角色或撤销角色特权 ...

  3. Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)

    db_修改过(用户 角色 权限): 1.新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错: 2.删除用户时候,若该用户创建过其他用户(不能改此用户名. ...

  4. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

    系列文章 七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)--ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)- ...

  5. springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)

    本文使用springboot+mybatis+SpringSecurity 实现用户权限数据库管理 实现用户和角色用数据库存储,而资源(url)和权限的对应采用硬编码配置. 也就是角色可以访问的权限通 ...

  6. orale用户角色管理

    Oracle 权限设置 一.权限分类: 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的).   二.系 ...

  7. apache2 wordpress目录权限_小白指南:WordPress中的用户角色和权限

    WordPress本身自带了一套用户角色管理系统,这套系统定义了每个用户角色可以做什么,不可以做什么.随着网站的发展,弄懂这些用户角色和权限的问题是非常有必要的.在这篇小白指南中,我们将用图表的形式对 ...

  8. oracle查看角色内容,oracle创建,查看用户和角色,用户角色赋权

    一.创建用户并赋予权限 1.创建用户 create user wangxiangyu identified by wangxiangyu; 2.赋权 grant dba to wangxiangyu; ...

  9. oracle查询用户权限和角色_详解jenkins配置用户角色权限的实现方法

    概述 今天介绍下jenkins应该怎么去配置用户角色权限,注意jenkins 配置用户角色权限需要安装插件 Role Strategy Plugin. 1.安装 Role Strategy Plugi ...

最新文章

  1. 计算机三级分类汇总,计算机三级网络考试机试100道分类汇总-整数各位数字运算排序统计.doc...
  2. 利用OpenCV的函数cvtcolor()进行颜色空间转换时需要注意的地方
  3. Spring AOP 增强器获取的源码解析
  4. 7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的
  5. Install Docker Mac OS X
  6. 输入url到页面返回的过程
  7. Gmail 收信的一些规则
  8. 整理python小爬虫
  9. 凌云一周看点 | 从运维和SRE角度看监控分析平台建设;从操作系统层面分析Java IO演进之路;机器学习落地的五个阶段...
  10. HIVE存储(五)HIVE文件的性能测试
  11. FPGA数字信号处理(27)卷积编码器与Viterbi译码器设计
  12. vivado_hls 与 modelsim 联合仿真时报错,Failed to access library ‘unisims_ver‘ at “unisims_ver“
  13. HJ82 将真分数分解为埃及分数 —— 华为机考练习题
  14. PTA 1072 开学寄语
  15. 碳云智能想做的,是规划生命路线
  16. c#中sealed关键字的使用
  17. USB鼠标设备驱动程序简单实现(一)
  18. .net调用百度api统计接口
  19. 学生管理系统【Python】
  20. 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠

热门文章

  1. 计算机教学反思博,博文25教学反思
  2. linux 段大小,linux - 在套接字上的Linux中减少TCP最大段大小(MSS) - 堆栈内存溢出...
  3. unity 敌人自动攻击和寻路_【A*Pathfinding】超级简单的Unity2D寻路
  4. python实现数据库事务回滚_使用Python脚本实现MySQL误操作的快速回滚
  5. ios view 切上部分圆角_ios – 具有圆角的UIView:如何正确剪辑子视图?
  6. 红帽启动apache服务器_redhat 启动ssh服务器
  7. 计算机将成为学生们的老师英语,重庆英语教师
  8. bootstrap 模态框满屏_如何设置Bootstrap模态框modal的高度和宽度?
  9. 实战|Python轻松实现动态网页爬虫(附详细源码)
  10. html %3c 不给转义,八个无法利用XSS漏洞的场景