给sharepoint某列表项单独赋予权限

时间:2024-09-09 09:37:32
/// <summary>
/// 列表项事件
/// </summary>
public class EventReceiver2 : SPItemEventReceiver
{
/// <summary>
/// 已添加项.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties); SPSecurity.RunWithElevatedPrivileges(delegate() //用此方法模拟管理员账户运行此事件处理程序
{
using (SPSite site = new SPSite(properties.SiteId)) //用此方法的话就不用dispose()了
{
using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) //注意获得web的方法!!!
{
try
{
this.EventFiringEnabled = false;// .DisableEventFiring(); //定义 查看权限
//SPRoleDefinition RoleDefReader = web.RoleDefinitions.GetByType(SPRoleType.Reader);
//定义 参与讨论权限
SPRoleDefinition RoleDefContributor = web.RoleDefinitions.GetByType(SPRoleType.Contributor); //获取用户
SPUser user = properties.Web.CurrentUser;// web.CurrentUser;
//SPUser user = web.EnsureUser("i:0#.f|clatticemembershipprovider|" + "1004355"); //定义 分配权限的对象
SPRoleAssignment RoleAssReader = new SPRoleAssignment((SPPrincipal)user); //给此对象绑定权限
RoleAssReader.RoleDefinitionBindings.Add(RoleDefContributor); //获取要赋予权限的列表项
SPList list = web.Lists[properties.ListId];
SPListItem item = list.GetItemById(Convert.ToInt32(properties.ListItemId));
//SPListItem item = properties.ListItem.ID;
//清空所有权限
if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false); //将此条目取消权限继承,如果是“false”,则将去除所有权限,只保留系统账户,如果是“true”,则将上一级权限复制过来。 //给此列表项赋予新的权限
item.RoleAssignments.Add(RoleAssReader); //提交更改
item.Update(); this.EventFiringEnabled = true;
}
catch (Exception ex)
{
}
}
}
});
}
}