Search code examples
javascriptsharepointsharepoint-2010csom

How to retrieve Sharepoint 2010 list item permissions using Javascript Client Object Model


My function for checking List Item permissions in Sharepoint doesn't seem to work. It is placed in aspx file on a Sharepoint 2010 site. I'm getting an error message below when trying to run it. Does anyone know how it should be done ? I found plenty of examples for the same function in C# but can't find anything in Javascript. Thanks !

function checkPermissions(){
var ctx = new SP.ClientContext.get_current();
var oBooksList=ctx.get_web().get_lists().getByTitle('test Repository');
var listItem=oBooksList.getItemById(2);


//ctx.load(listItem.get_roleAssignments());
ctx.load(listItem, 'RoleAssignments');
ctx.executeQueryAsync(
    Function.createDelegate(this, this.onSucceededCallback),
    Function.createDelegate(this, this.onFailedCallback));

}
function onSucceededCallback(sender, args){
    alert('it worked');
}

Error message:

SCRIPT5007: Unable to get value of the property 'apply': object is null or undefined 

Solution

  • Something like this should help....

    UNTESTED

    function checkPermissions(){
        var ctx = new SP.ClientContext.get_current();
        var oBooksList = ctx.get_web().get_lists().getByTitle('test Repository');
        var listItem = oBooksList.getItemById(2);
        var roles = listItem.get_roleAssignments();
    
        ctx.load(roles);
        ctx.executeQueryAsync(
            // success
            function (sender, args){
                var roleInfo = '';
                var roleEnumerator = roles.getEnumerator();
                // enumerate the roles
                while (roleEnumerator.moveNext()) {
                    var role = roleEnumerator.get_current();
                    var principal = role.get_member();
                    // get the principal
                    ctx.load(principal);
                    ctx.executeQueryAsync(
                        // success
                        function (sender, args){
                            // alert the title
                            alert(principal.get_title());
                        }, 
                        // failure
                        function (sender, args){
                            alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
                        });
                }
            }, 
            // failure
            function (sender, args){
                alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
            });
    
    }