Item Level permissions
SharePoint has a robust object model supporting security at each level of the farm. Let’s take a quick tour of some relevant methods and properties around item level reporting.
All securable objects have a method named GetUserEffectivePermissionInfo which is defined in the base class SPSecurableObject. This method returns back an SPPermissionInfo object which we can use to inspect the role definition bindings and corresponding permission levels. SPSecurableObject is imple,eented at the SPWeb, SPList, and SPLIstItem class level, hence how we assign permissions if needed at the site level.
We can loop through the SPRoleAssignments objects via the RoleAssignments property. This will give us information about how the user is given access to the resource. This returns the Member (the account or group), the RoleDefinitionBindings (permission level). This is an excellent place to start if you are looping through each item.
Next can look at the RoleDefinitionBindings property which returns back a collection of SPRoleDefinition objects that tell us about the type of access granted.
Other important properties for reporting security include:
- HasUniqueRoleAssignments, or the method returing the same thing: get_HasUniqueRoleAssignments()
- RoleDefinitionBindings: collection of SPRole Definition objects returned.
- IsSiteAdmin : a property of the user, indicates if a user is a Site Collection Admin ,which includes explicit permissions to everything
- SPListItem.FirstUniqueAncestorSecurableObject: Retrieves the first unique ancestor if it has unique role assignments otherwise returns the first parent object (folder, list, or Web site) that has unique role assignments.
For a more general view of Security permissions in SharePoint, please see this TechNet article.