• 给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)
                            {
                            }
                        }
                    }
                });
            }
        }
  • 相关阅读:
    hdu4738(双连通分量)
    hdu4635(强连通缩点)
    hdu4612(双连通缩点+树的直径)
    poj3177(边双连通分量+缩点)
    poj3694(tarjan缩点+lca)
    hdu5171(矩阵快速幂)
    uva796(求桥数目)
    uva315(求割点数目)
    POJ1058 The Gourmet Club
    POJ1057 FILE MAPPING
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/3501808.html
Copyright © 2020-2023  润新知