_UserHasRole: function (roleName) {
var curUserId = Xrm.Page.context.getUserId();
var curUnitId = Yasn.Account.CustomEvents._GetEntityAttribute("SystemUser", curUserId, "BusinessUnitId").BusinessUnitId.Id;
var oDataEndpointUrl = location.protocol + "//" + location.host + "/" + Xrm.Page.context.getOrgUniqueName() + "/XRMServices/2011/OrganizationData.svc/RoleSet?$top=1&$filter=Name eq '" + encodeURIComponent(roleName) + "'" + " and BusinessUnitId/Id eq (guid'" + curUnitId + "')";
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.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 (Yasn.Account.CustomEvents._GuidsAreEqual(userRole, id)) {
return true;
}
}
}
}
return false;
},
_GetRequestObject: function () {
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch (ex) {
return null;
}
}
},
_GuidsAreEqual: function (guid1, guid2) {
var isEqual = false;
if (guid1 == null || guid2 == null) {
isEqual = false;
}
else {
isEqual = guid1.replace(/[{}]/g, "").toLowerCase() == guid2.replace(/[{}]/g, "").toLowerCase();
}
return isEqual;
},
_GetEntityAttribute: function (entityName, entityId, AttributeName) {
var odataSelect = location.protocol + "//" + location.host + "/" + Xrm.Page.context.getOrgUniqueName() + "/XRMServices/2011/OrganizationData.svc/" + entityName + "Set?$select=" + AttributeName + "&$filter=" + entityName + "Id eq guid'" + entityId + "'";
var retrieveReq = new XMLHttpRequest();
if (retrieveReq != null) {
retrieveReq.open("GET", odataSelect, false);
retrieveReq.setRequestHeader("X-Requested-Width", "XMLHttpRequest");
retrieveReq.setRequestHeader("Accept", "application/json, text/javascript, */*");
retrieveReq.send(null);
var retrieved = eval('(' + retrieveReq.responseText + ')').d;
if (retrieved != null && retrieved.results.length == 1) {
//var retrievedValue = retrieved.results[0].BusinessUnitId;
//var id = retrievedValue.Id;
//var name = retrievedValue.Name;
//return retrievedValue;
return retrieved.results[0];
}
}
}
Dynamic CRM 之判断用户是否具有某种角色
最新推荐文章于 2024-04-25 10:16:28 发布