MSCRM2011 Current User has Role 【判定当前用户角色方法】
生活随笔
收集整理的這篇文章主要介紹了
MSCRM2011 Current User has Role 【判定当前用户角色方法】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第一種:普通的RetrieveMultiple方式
//功能說明: 獲取當(dāng)前用戶是否具有該角色 //備注: //參數(shù)說明: // (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方式
//功能說明: 獲取當(dāng)前用戶是否具有該角色 //備注: //參數(shù)說明: // 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; }//功能說明: 獲取請求體 //備注: //參數(shù)說明(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 //備注: //參數(shù)說明(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; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/Republic/archive/2011/08/24/MSCRM_2011_CurrentUser_Has_Roles_method.html
總結(jié)
以上是生活随笔為你收集整理的MSCRM2011 Current User has Role 【判定当前用户角色方法】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在图像中绘制基本形状和文字
- 下一篇: 面试系列12 redis和memca