zoukankan      html  css  js  c++  java
  • 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();

                    }

                });

            }

  • 相关阅读:
    完美正方形-深度遍历
    CGCDSSQ Codeforces 475D
    [国家集训队]happiness
    点分治学习笔记
    [POI2008]PLA-Postering
    [20200801NOIP提高组模拟T2]电话线铺设
    [20200801NOIP提高组模拟T3]老司机
    [HNOI2001]产品加工
    分层图最短路[学习笔记]
    次芝麻
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3184482.html
Copyright © 2011-2022 走看看