Translate

Friday 9 August 2013

Get current user role and name in rollup 14

  How to get "Current User Role and Role Name" in CRM for roll-up 14. 

     Hello CRM lovers, Here is my blog for  getting logged user Role and Role name for Roll-Up 12, Roll-Up 13, Roll-Up 14 and also in cross browser support. I will really help you. For achieving this you have to fallow these steps.

 

Step 1:-  First of all you have to add reference of J Query main file minimum version jquery1.4.1.min or higher version. you can download it from http://jquery.com/.

Step 2:-  Now you have to add reference of "json2" on your crm entity form, You can get it from sdk, you will find it in your sdk folder.

Step 3:-  Now add the fallowing code in your web resource. 



//******************************************************************************************
//*******Retrive Multiple recored on the basis of the criteria OData Rest Method************
//******************************************************************************************
function retrieveMultiple(odataSetName, filter, successCallback, errorCallback, _executionObj) {
    _executionObjMultiretrive = _executionObj;
    var context = Xrm.Page.context;
    var serverUrl = context.getServerUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    //odataSetName is required, i.e. "AccountSet"  
    if (!odataSetName) {
        alert("odataSetName is required.");
        return;
    }
    //Build the URI 
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName;
    //If a filter is supplied, append it to the OData URI
    if (filter) {
        odataUri += filter;
    }
    //Asynchronous AJAX function to Retrieve CRM records using OData
    $.ajax({
        type: "GET",
        async: false,
        contentType: "application/json; charset=utf-8",
        datatype: "json", url: odataUri,
        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 (successCallback) {
                if (data && data.d && data.d.results) {
                    successCallback(data.d.results, textStatus, XmlHttpRequest);
                }
                else if (data && data.d) {
                    successCallback(data.d, textStatus, XmlHttpRequest);
                }
                else {
                    successCallback(data, textStatus, XmlHttpRequest);
                }
            }
        },
        error: function (XmlHttpRequest, textStatus, errorThrown) {
            if (errorCallback)
                errorCallback(XmlHttpRequest, textStatus, errorThrown);
            else
                errorHandler(XmlHttpRequest, textStatus, errorThrown);
        }
    });
}
function errorHandler(xmlHttpRequest, textStatus, errorThrow) {
    alert("Error : " + textStatus + ": " + xmlHttpRequest.statusText);
}


Step 4 :-  Now add the fallowing three functions in your web resource, In third function you will get current logged user role name.

//**********************************************************************************
//***************** Function For getting the Current User Role********************
//**********************************************************************************
    function getOwnerRole(UserID) {
        var _Userid = UserID;
        if (_Userid != null) {
            var istrue = retrieveMultiple("SystemUserRolesSet", "?$filter=SystemUserId eq (guid'" + _Userid + "')", RetrieveDataFromSystemUser, null, null);
        }
    }

    function RetrieveDataFromSystemUser(data, textStatus, XmlHttpRequest) {
        //debugger;
        var executioncontext = _executionObjMultiretrive;
        var len = data.length;
        if (len > 0) {
            for (i = 0; i < len; i++) {
                if (data[i].RoleId != null) {

 //****************************************************************
//*** This is the first role user have
//*** User may have many roles so you can get all here during loop                    //******************************************************************************
      var userRoleId=data[0].RoleId;

      retrieveMultiple("RoleSet", "?$filter=RoleId eq (guid'" + data[i].RoleId + "')",         RetrieveRoleName, null, null);
                }
            }
        }
    }

    function RetrieveRoleName(data, textStatus, XmlHttpRequest) {
        //debugger;
        var executioncontext = _executionObjMultiretrive;
        var len = data.length;

        if (data[0].Name != null) {

              var userRoleName=data[0].Name;          
        }
    }           



So by fallowing all upper steps you can get current logged user Role Id and Role Name. It will work in cross browser and in all new Roll-Up 12,Roll-Up 13 and Roll-Up 14. 

Enjoy the great technology Dynamics CRM. Good luck.....!!!!! 
Thanks.