zoukankan      html  css  js  c++  java
  • 给sharepoint某列表项单独赋予权限

    /// <summary>
        /// 列表项事件
        /// </summary>
        public class EventReceiver2 : SPItemEventReceiver
        {
            /// <summary>
            /// 已添加项.
            /// </summary>
            public override void ItemAdded(SPItemEventProperties properties)
            {
                base.ItemAdded(properties);
    
                SPSecurity.RunWithElevatedPrivileges(delegate()      //用此方法模拟管理员账户运行此事件处理程序
                {
                    using (SPSite site = new SPSite(properties.SiteId))    //用此方法的话就不用dispose()了
                    {
                        using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) //注意获得web的方法!!!
                        {
                            try
                            {
                                this.EventFiringEnabled = false;// .DisableEventFiring();
    
                                //定义 查看权限
                                //SPRoleDefinition RoleDefReader = web.RoleDefinitions.GetByType(SPRoleType.Reader);
                                //定义 参与讨论权限
                                SPRoleDefinition RoleDefContributor = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
    
                                //获取用户
                                SPUser user = properties.Web.CurrentUser;// web.CurrentUser;
                                //SPUser user = web.EnsureUser("i:0#.f|clatticemembershipprovider|" + "1004355");
    
                                //定义 分配权限的对象
                                SPRoleAssignment RoleAssReader = new SPRoleAssignment((SPPrincipal)user);
    
                                //给此对象绑定权限
                                RoleAssReader.RoleDefinitionBindings.Add(RoleDefContributor);
    
                                //获取要赋予权限的列表项
                                SPList list = web.Lists[properties.ListId];
                                SPListItem item = list.GetItemById(Convert.ToInt32(properties.ListItemId));
                                //SPListItem item = properties.ListItem.ID;
                                //清空所有权限
                                if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false);   //将此条目取消权限继承,如果是“false”,则将去除所有权限,只保留系统账户,如果是“true”,则将上一级权限复制过来。
    
                                //给此列表项赋予新的权限
                                item.RoleAssignments.Add(RoleAssReader);
    
                                //提交更改
                                item.Update();
    
                                this.EventFiringEnabled = true;
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }
                });
            }
        }
  • 相关阅读:
    python函数收集不确定数量的值
    PHP比较数组、对象是否为空
    PHP实现斐波那契数列
    Python之复制列表
    1004. 最大连续1的个数 III(滑动窗口)
    276. 栅栏涂色(动态规划)
    376. 摆动序列
    148. 排序链表
    143. 重排链表
    1530. 好叶子节点对的数量
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/3501808.html
Copyright © 2011-2022 走看看