sharepoint 2013 自定义列表eventhandle权限控制

记录一下如何在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();

                }

            });

        }

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值