Item Level Security for the User:
public override void ItemAdded(SPItemEventProperties properties)
{
SPUser usr = null;
using (SPWeb web = properties.Web)
{
usr = web.SiteUsers.GetByID(web.CurrentUser.ID);
}
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(properties.SiteId))
{
using (SPWeb web = site.OpenWeb())
{
SPList lst = web.Lists[properties.ListId];
SPListItem li = lst.GetItemById(properties.ListItemId);
SPRoleDefinition rd = web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignment ra = new SPRoleAssignment((SPPrincipal)usr);
ra.RoleDefinitionBindings.Add(rd);
if (!li.HasUniqueRoleAssignments)
{
li.BreakRoleInheritance(false);
}
for (int i = 0; i <= li.RoleAssignments.Count - 1; i++)
{
li.RoleAssignments.Remove(i);
}
li.RoleAssignments.Add(ra);
li.Update();
}
}
});
}
Item Level Security for a Group:
public override void ItemAdded(SPItemEventProperties properties)
{
SPGroup grp = null;
string groupname = "ListUsers";
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(properties.SiteId))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
SPGroupCollection groupCollection = web.Groups;
if (string.IsNullOrEmpty(groupname) || (groupCollection == null) || (groupCollection.Count == 0))
{
throw new ArgumentNullException("Security Group Not Found");
}
else
{
grp = groupCollection[groupname];
SPList lst = web.Lists[properties.ListId];
SPListItem li = lst.GetItemById(properties.ListItemId);
SPRoleDefinition rd = web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignment ra = new SPRoleAssignment((SPPrincipal)grp);
ra.RoleDefinitionBindings.Add(rd);
if (!li.HasUniqueRoleAssignments)
{
li.BreakRoleInheritance(false);
}
for (int i = 0; i <= li.RoleAssignments.Count - 1; i++)
{
li.RoleAssignments.Remove(i);
}
li.RoleAssignments.Add(ra);
li.Update();
web.AllowUnsafeUpdates = false;
}
}
}
});
}
0 comments:
Post a Comment