注意:用戶須要安全角色讀的權限,json
function onLoad() { CurrentUserHasRole('系統管理員'); //有則是TRUE } //功能說明: 獲取當前用戶是否具備該角色 //備註: //參數說明: // roleName: 角色名稱 //返回值說明(return): // bool: function CurrentUserHasRole(roleName) { //爲了不OData中文檢索不出這種問題,使用encodeURIComponent來encode; var serverUrl = Xrm.Page.context.getClientUrl(); var curUserId = Xrm.Page.context.getUserId(); var retrieveEntityReq = RetrieveEntityRecordByGuid("SystemUser", curUserId); retrieveEntityReq.send(); if (retrieveEntityReq.status == 200) { var retrieved = JSON.parse(retrieveEntityReq.responseText).d; var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/"; oDataEndpointUrl += "RoleSet?$filter=Name eq " + "'" + encodeURIComponent(roleName) + "'" + " and BusinessUnitId/Id eq (guid'" + retrieved.BusinessUnitId.Id + "')"; var service = new XMLHttpRequest(); if (service != null) { service.open("GET", oDataEndpointUrl, false); service.setRequestHeader("Accept", "application/json"); service.setRequestHeader("Content-Type", "application/json; charset=utf-8"); service.send(null); var requestResults = eval('(' + service.responseText + ')').d; if (requestResults != null && requestResults.results.length == 1) { var role = requestResults.results[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; } } //功能說明: 比較兩個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; }
添加OnLoad方法時需選擇 傳遞參數安全