function GetAllSystemRoles() {
var serverUrl = Xrm.Page.context.getServerUrl();
var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/";
oDataEndpointUrl += "RoleSet";
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;
return requestResults;
}
}
function GetRoleIdByName(allsecurityRoles,rolename) {
if (allsecurityRoles != null && allsecurityRoles.results.length > 0) {
for (var i = 0; i < allsecurityRoles.results.length; i++) {
var role = allsecurityRoles.results[i];
if (role.Name == rolename) {
id = role.RoleId;
return id;
}
}
}
return null;
}
function UserHasRole(allsecurityRoles) {
debugger;
var nsrApprovedPrivilage = new Array("Pricing Analyst", "TSC", "Pricing Team manager", "TSC Manager", "Sales Manager - Direct", "Sales Manager - Telesales", "Sales Manager - Winback", "General Manager - Direct", "TSM");
for (var j = 0; j < nsrApprovedPrivilage.length; j++) {
var id = GetRoleIdByName(allsecurityRoles, nsrApprovedPrivilage[j]);
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;
}
function GetRequestObject() {
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch (ex) {
return null;
}
}
}
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;
}
function CheckIfUserCanApprove() {
debugger;
var hasPrivilagesToApprove = UserHasRole(GetAllSystemRoles());
if (hasPrivilagesToApprove) {
alert("hasPrivilagesToApprove");
}
else {
alert("does not have hasPrivilagesToApprove");
}
}
Add the list of security roles in nsrApprovedPrivilage array to check if user has that particular role
No comments:
Post a Comment