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)
                            {
                            }
                        }
                    }
                });
            }
        }
  • 相关阅读:
    Ansible批量更新远程主机用户密码
    国外程序员推荐:每个程序员都应该读的非编程书
    FindFriendsServer服务搭建
    Android JNI HelloWorld实现
    2014年4月读书单
    jQuery 之父:每天写代码
    QT210 Android4.0源码编译和烧录文档整理
    Android系统分区理解及分区目录细解
    Android组件Spinner使用
    使用事件驱动模型实现高效稳定的网络服务器程序
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/3501808.html
Copyright © 2011-2022 走看看