SP.SecurableObject Class
Applies to: SharePoint Foundation 2010
An object that can be assigned security permissions.
SP.SecurableObject
Inherits
Remarks
The HasUniqueRoleAssignments property is not included in the default scalar property set for this type.
Example
The following example creates an input button on an application page that creates a new permission level and adds a user to a specific list with that permission level.
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<script type="text/ecmascript" language="ecmascript">
function runCode() {
var clientContext = new SP.ClientContext();
var siteColl = clientContext.get_site();
var site = clientContext.get_web();
// Set up permissions.
var permissions = new SP.BasePermissions();
permissions.set(SP.PermissionKind.viewListItems);
permissions.set(SP.PermissionKind.addListItems);
permissions.set(SP.PermissionKind.editListItems);
permissions.set(SP.PermissionKind.deleteListItems);
// Create a new role definition.
var roleDefinitionCreationInfo = new SP.RoleDefinitionCreationInformation();
roleDefinitionCreationInfo.set_name('Manage List Items');
roleDefinitionCreationInfo.set_description('Allows a user to manage list items');
roleDefinitionCreationInfo.set_basePermissions(permissions);
var roleDefinition = siteColl.get_rootWeb().get_roleDefinitions().add(roleDefinitionCreationInfo);
// Create a new RoleDefinitionBindingCollection.
var newBindings = SP.RoleDefinitionBindingCollection.newObject(clientContext);
// Add the role to the collection.
newBindings.add(roleDefinition);
// Get a securable object to work with (the Announcements list), and use the SecurableObject.BreakPermissions method to break permissions so they can be managed directly.
var listSecurableObject = site.get_lists().getByTitle('Announcements');
listSecurableObject.breakRoleInheritance(true, false);
// Use the SecurableObject.roleAssignments property to get the RoleAssignmentCollection for the list.
var assignments = listSecurableObject.get_roleAssignments();
// Add the user to the target list and assign the use to the new RoleDefinitionBindingCollection.
var roleAssignment = assignments.add(site.get_currentUser(), newBindings);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Security modified');
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>
<input id="Button1" type="button" value="Run Code" onclick="runCode()" />
</asp:Content>