Archive

Archive for August 5, 2011

Check User Security Role in CRM 2011 using JScript

August 5, 2011 8 comments

Hi,

To use ODATA service in CRM 2011 you need two resource files
  •  json2.js
  • JQuery.js

Add these 2 files As Web resources in CRM System & As Libraries to the “Entity” which you are calling OData Service

Below is the code to check the current user’s Security Role using JScript & OData Service

//Pass the role which you want to check, as Parameter (i.e.,System Administrator etc…)

// It fetch the role information which you passed as parameter using OData Service

function UserHasRole(roleName) {

var serverUrl = Xrm.Page.context.getServerUrl();

var oDataEndpointUrl = serverUrl + “/XRMServices/2011/OrganizationData.svc/”;

oDataEndpointUrl += “RoleSet?$top=1&$filter=Name eq ‘” + 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.results[0];

var id = role.RoleId;

//Get Current User Roles

var currentUserRoles = Xrm.Page.context.getUserRoles();

//Check whether current user roles has the role passed as argument

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;

}

How can I call this function? :-

if(UserHasRole(‘System Administrator’)){

alert(“Current logged-in user is  System Adminstrator”);

}

Hope it helps 🙂