Sunday, May 27, 2012

Check User Roles

Checking user role is a common requirement in MS CRM application. Here is the code using oData query.


//Get user roles

CustomcheckSecurityRole: function () {

    //Getting the user id of the logged in user 
    var user = Xrm.Page.context.getUserId();
    var loggedInUserId = user.substring(1, 37);
    flag = false;

    //Getting the roles of logged in user
    var odataSelect = "/SystemUserSet?$select=systemuserroles_association/Name,systemuserroles_association/RoleId&$expand=systemuserroles_association&$filter=SystemUserId eq guid'" + loggedInUserId + "'";

    var requestResults = GetEntityData(odataSelect);

    var roleName = ""; 

    //Comparing the roles of logged in user,If Display Role or Read All User is present return false

    for (var i = 0; i < requestResults.results[0].systemuserroles_association.results.length; i++) {
        roleName = requestResults.results[0].systemuserroles_association.results[i].Name; 
        if (roleName.toString() != "System Administrator")
        {
            flag = true;
        } 
    }
    return (flag);
}
//Get entity data. It requires oData query.
GetEntityData :function(OData) {
    var serverURL = getServerUrl();
    var oDataEndpointUrl = serverURL + "/XRMServices/2011/OrganizationData.svc";
    oDataEndpointUrl += OData;
    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)
            return requestResults;
        else
            return null;
    }
}


GetRequestObject: function () {
        if (window.XMLHttpRequest) {
            return new window.XMLHttpRequest;
        }
        else {
            try {
                return new ActiveXObject("MSXML2.XMLHTTP.3.0");
            }
            catch (ex) {
                return null;
            }
        }
    } 

getServerUrl: function {

       var customServerURL = document.location.protocol + "//" + document.location.host + "/" + Xrm.Page.context.getOrgUniqueName();
       return customServerURL;

      }

No comments:

Post a Comment