您的位置:首页 > 其它

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();
               
}
            });
        }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息