记录一下如何在sharepoint server 2013文档库中,使用eventhandle控制文档库document library的条目item权限。
///<summary>
///正在添加项.
///</summary>
publicoverride void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
SPSecurity.RunWithElevatedPrivileges(delegate(){
if(properties.ListTitle =="文档")
{
string DocIcon =System.IO.Path.GetExtension(properties.AfterUrl);
ArrayList al =GetExtensionByFile();
for (int i = 0; i <al.Count; i++)
{
if (DocIcon ==al[i].ToString())
{
properties.Cancel =true;
properties.ErrorMessage ="不允许上载" + DocIcon +"文件!";
break;
}
}
}
});
}
private ArrayList GetExtensionByFile()
{
ArrayList al =newArrayList();
al.Add(".aspx");
al.Add(".jsp");
al.Add(".asp");
al.Add(".exe");
return al;
}
///<summary>
///已添加项.
///</summary>
publicoverride void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if(properties.ListTitle =="共享文档1")
{
SPSite site =newSPSite(properties.SiteId);
SPWeb web =site.OpenWeb();
web.AllowUnsafeUpdates = true;
SPList list =web.Lists[properties.ListId];
SPFile file =list.GetItemById(properties.ListItemId).File;
SPListItem item = file.Item;
//权限断开,并且移除掉其它权限
if(!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(false);
}
//添加用户权限
SPUser CurrentUser =web.EnsureUser(properties.UserLoginName);
SPRoleAssignment MyRoleAssignment =newSPRoleAssignment(CurrentUser);
MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.WebDesigner));
item.RoleAssignments.Add(MyRoleAssignment);
CurrentUser =web.EnsureUser("kw\\cxx");
MyRoleAssignment = newSPRoleAssignment(CurrentUser);
MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.WebDesigner));
item.RoleAssignments.Add(MyRoleAssignment);
item.Update();
}
});
}