sharepoint 2013 自定义列表eventhandle权限控制
2013-07-10 20:55
447 查看
记录一下如何在sharepoint server 2013自定义列表中,使用eventhandle控制自定义列表custom list的条目item权限。
///<summary>
///正在添加项.
///</summary>
public
override void ItemAdding(SPItemEventProperties
properties)
{
base.ItemAdding(properties);
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if(properties.ListTitle =="工作日报")
{
string DepartmentName ="";
if(properties.AfterProperties["Department"] !=null)
{
DepartmentName =properties.AfterProperties["Department"].ToString();
}
if (DepartmentName =="IT部门")
{
properties.ErrorMessage="该部门暂时不能填写日报!";
properties.Cancel =true;
}
}
});
}
///<summary>
///已添加项.
///</summary>
public
override void ItemAdded(SPItemEventProperties
properties)
{
base.ItemAdded(properties);
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if(properties.ListTitle =="工作日报")
{
SPSite site=newSPSite(properties.SiteId);
SPWeb web=site.OpenWeb();
web.AllowUnsafeUpdates = true;
SPList list =web.Lists[properties.ListId];
SPListItem item =list.GetItemById(properties.ListItemId);
//权限断开,并且移除掉其它权限
if(!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(false);
}
//添加用户权限
SPUser CurrentUser =web.EnsureUser(properties.UserLoginName);
SPRoleAssignment MyRoleAssignment =newSPRoleAssignment(CurrentUser);
MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Contributor));
item.RoleAssignments.Add(MyRoleAssignment);
//添加上级领导权限
//1.根据当前用户,获取到该用户的上级领导
SPList EmployRelationList= web.Lists["员工关系表"];
SPQuery query =newSPQuery();
query.Query = @"<Where><Eq><FieldRefName=""EmployeeId"" LookupId=""TRUE""/><Value Type=""User"">" +properties.CurrentUserId +"</Value></Eq></Where>";
SPListItemCollection sic =EmployRelationList.GetItems(query);
DataTable dt =sic.GetDataTable();
string LeaderUserId =string.Empty;
if (dt !=null &&dt.Rows.Count > 0)
{
LeaderUserId = dt.Rows[0]["Leader"].ToString();
}
//2.将当前上级领导添加到该项目权限中
if (LeaderUserId !=null &&LeaderUserId!="")
{
SPUser LeaderUser =web.EnsureUser(LeaderUserId);
MyRoleAssignment =newSPRoleAssignment(LeaderUser);
MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Reader));
item.RoleAssignments.Add(MyRoleAssignment);
}
item.Update();
web.Dispose();
}
});
}
///<summary>
///正在添加项.
///</summary>
public
override void ItemAdding(SPItemEventProperties
properties)
{
base.ItemAdding(properties);
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if(properties.ListTitle =="工作日报")
{
string DepartmentName ="";
if(properties.AfterProperties["Department"] !=null)
{
DepartmentName =properties.AfterProperties["Department"].ToString();
}
if (DepartmentName =="IT部门")
{
properties.ErrorMessage="该部门暂时不能填写日报!";
properties.Cancel =true;
}
}
});
}
///<summary>
///已添加项.
///</summary>
public
override void ItemAdded(SPItemEventProperties
properties)
{
base.ItemAdded(properties);
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if(properties.ListTitle =="工作日报")
{
SPSite site=newSPSite(properties.SiteId);
SPWeb web=site.OpenWeb();
web.AllowUnsafeUpdates = true;
SPList list =web.Lists[properties.ListId];
SPListItem item =list.GetItemById(properties.ListItemId);
//权限断开,并且移除掉其它权限
if(!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(false);
}
//添加用户权限
SPUser CurrentUser =web.EnsureUser(properties.UserLoginName);
SPRoleAssignment MyRoleAssignment =newSPRoleAssignment(CurrentUser);
MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Contributor));
item.RoleAssignments.Add(MyRoleAssignment);
//添加上级领导权限
//1.根据当前用户,获取到该用户的上级领导
SPList EmployRelationList= web.Lists["员工关系表"];
SPQuery query =newSPQuery();
query.Query = @"<Where><Eq><FieldRefName=""EmployeeId"" LookupId=""TRUE""/><Value Type=""User"">" +properties.CurrentUserId +"</Value></Eq></Where>";
SPListItemCollection sic =EmployRelationList.GetItems(query);
DataTable dt =sic.GetDataTable();
string LeaderUserId =string.Empty;
if (dt !=null &&dt.Rows.Count > 0)
{
LeaderUserId = dt.Rows[0]["Leader"].ToString();
}
//2.将当前上级领导添加到该项目权限中
if (LeaderUserId !=null &&LeaderUserId!="")
{
SPUser LeaderUser =web.EnsureUser(LeaderUserId);
MyRoleAssignment =newSPRoleAssignment(LeaderUser);
MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Reader));
item.RoleAssignments.Add(MyRoleAssignment);
}
item.Update();
web.Dispose();
}
});
}
相关文章推荐
- sharepoint 2013 自定义列表eventhandle权限控制
- sharepoint2013列表实现项目级权限控制
- sharepoint 2013 文档库eventhandle权限控制
- SharePoint 2013 Designer系列之自定义列表表单
- SharePoint 列表权限控制
- VS 2013 Preview 自定义 SharePoint 2013 列表 之 两个Bug
- SharePoint 2013 自定义翻页显示列表项
- SharePoint 2013 自定义翻页显示列表项
- SharePoint 2013 自定义模板页后在列表里修改不了视图
- SharePoint 2013 关于自定义显示列表表单的bug
- SharePoint【用户访问控制】-- 03. SharePoint 2010 列表项级权限、草稿项安全设置
- sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置
- SharePoint 2013 关于自定义显示列表表单的bug
- 利用开源SharePoint Permission Extension插件对SharePoint 的列表进行权限控制!
- SharePoint 2013 Designer系列之自定义列表表单
- sharepoint 2016 学习系列篇(17)-自定义列表应用篇-(6)开启列表数据版本控制
- SharePoint 2013开发入门探索(一)- 自定义列表
- SharePoint 列表权限控制
- sharepoint 2013 自定义列表栏(一)
- sharepoint 2010 自定义列表启用版本记录控制 如何在修改数据不产生新版本