Hi,
you can hide few fields based on security role use this code,
function onload() {
debugger;
// returns true if the given security role exists for the user, else returns false
var results = CheckUserRole("System Administrator", Xrm.Page.context);
// alert(results);
if (results == true) {
Xrm.Page.ui.tabs.get("new_x").setVisible(true);
}
else {
Xrm.Page.ui.tabs.get("new_x").setVisible(false);
}
}
// This method takes SecurityRole Name and context as parameters
function CheckUserRole(roleName, context) {
debugger;
var userHasRole = false;
//get the current roles for the user
var userRoles = context.getUserRoles();
//get the roleids with the rolename
//the roleids can be multiple for multiple business units
var roleIdArray = FetchUserRoleIdWithName(roleName, context);
for (var userRole in userRoles) {
if (jQuery.inArray(userRoles[userRole], roleIdArray) != -1) {
userHasRole = true;
break;
}
}
return userHasRole;
}
function FetchUserRoleIdWithName(roleName, context) {
debugger;
var context = Xrm.Page.context;
var serverUrl = context.getClientUrl();
// var serverUrl = Xrm.Page.context.getServerUrl();
var oDataUri = serverUrl + "/XRMServices/2011/OrganizationData.svc/RoleSet?$filter=Name eq '" + roleName + "'&$select=RoleId";
var jSonArray = new Array();
jQuery.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: oDataUri,
async: false,
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
if (data && data.d != null) {
for (var count = 0; count < data.d.results.length; count++) {
jSonArray.push(data.d.results[count].RoleId);
}
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert("Error : has occured during retrieval of the role " + roleName);
}
});
return jSonArray;
}