简体   繁体   中英

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 

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()); 
        });

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM