zoukankan      html  css  js  c++  java
  • sharepoint权限操作(记录以备忘)

    using Microsoft.SharePoint;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace SharePointProject2
    {
        class Class2
        {
    
            /// <summary>
            /// 判断组是否存在
            /// </summary>
            /// <param name="web"></param>
            /// <param name="groupname"></param>
            /// <returns></returns>
            public bool IsExistGroup(SPWeb web, string groupname)
            {
                try
                {
                    foreach (SPGroup grouplist in web.SiteGroups)//判断组是否存在
                    {
                        if (grouplist.ToString().ToLower() == groupname.ToLower())
                            return true;
                    }
                    return false;
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            /// <summary>
            /// 新建组
            /// </summary>
            /// <param name="web"></param>
            /// <param name="groupname"></param>
            /// <param name="member"></param>
            /// <param name="spuser"></param>
            /// <param name="description"></param>
            /// <returns></returns>
            public bool AddGroup(SPWeb web, string groupname, SPMember member, SPUser spuser, string description)
            {
                try
                {
                    if (!IsExistGroup(web, groupname))
                    {
                        web.SiteGroups.Add(groupname, member, spuser, description);//新建组
                        return true;
                    }
                    return false;
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            /// <summary>
            /// 判断指定组是否存在用户
            /// </summary>
            /// <param name="web"></param>
            /// <param name="username">Domin\Name形式</param>
            /// <param name="groupname"></param>
            /// <returns></returns>
            public bool IsExistUser(SPWeb web, string username, string groupname)
            {
                try
                {
                    foreach (SPUser userlist in web.SiteGroups[groupname].Users)//判断指定组是否存在用户
                    {
                        if (userlist.ToString().ToLower() == username.ToLower())
                            return true;
                    }
                    return false;
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            /// <summary>
            /// 根据指定的组新建用户
            /// </summary>
            /// <param name="web"></param>
            /// <param name="loginname">登录名:Domin\Name形式</param>
            /// <param name="groupname">组名称</param>
            /// <param name="email">Email</param>
            /// <param name="cnname">中文名</param>
            /// <param name="notes">用户说明</param>
            /// <returns>bool</returns>
            public bool AddUserToGroup(SPWeb web, string loginname, string groupname, string email, string cnname, string notes)
            {
                try
                {
                    if (!IsExistUser(web, loginname, groupname))
                    {
                        web.SiteGroups[groupname].AddUser(loginname, email, cnname, notes);//新建用户
                        return true;
                    }
                    return false;
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            /// <summary>
            /// 组权限分配与定义(New)
            /// </summary>
            /// <param name="web"></param>
            /// <param name="groupname"></param>
            /// <param name="roles"></param>
            /// <returns></returns>
            public bool AddGroupToRoles(SPWeb web, string groupname, string[] roles)
            {
                try
                {
                    string[] _roles = roles;
                    int rolemun = _roles.Length;
    
                    if (IsExistGroup(web, groupname))
                    {
                        //改变站点继承权
                        if (!web.HasUniqueRoleDefinitions)
                        {
                            web.RoleDefinitions.BreakInheritance(true, true);//复制父站点角色定义并且保持权限
                        }
    
                        //站点继承权改变后重新设置状态
                        web.AllowUnsafeUpdates = true;
    
                        //组权限分配与定义(New)
                        SPRoleDefinitionCollection roleDefinitions = web.RoleDefinitions;
                        SPRoleAssignmentCollection roleAssignments = web.RoleAssignments;
                        SPMember memCrossSiteGroup = web.SiteGroups[groupname];
                        SPPrincipal myssp = (SPPrincipal)memCrossSiteGroup;
                        SPRoleAssignment myroles = new SPRoleAssignment(myssp);
                        SPRoleDefinitionBindingCollection roleDefBindings = myroles.RoleDefinitionBindings;
                        if (rolemun > 0)
                        {
                            for (int i = 0; i < rolemun; i++)
                            {
                                roleDefBindings.Add(roleDefinitions[_roles[i]]);
                            }
                        }
                        roleAssignments.Add(myroles);
                        return true;
                    }
                    return false;
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            protected void btnCreateSite_Click(object sender, EventArgs e)
            {
    
                try
                {
                    SPSite site = new SPSite("http://contososrv:8010/");
    
                    //string spwt = SPWebTemplate.WebTemplateSTS;//默认选择协作站点模板 
    
                    web = site.OpenWeb("Test/");
                    web.AllowUnsafeUpdates = true;
                    SPMember memUser = web.Users[0];
                    SPUser suser = web.Users[0];
    
    
                    //新建组
                    //web.SiteGroups.Add("skyteam3", memUser, suser, "new skyteam");
                    //web.SiteGroups["skyteam3"].AddUser("adr\administrator", "pccai@adr.svic1", "蔡", "系统维修人员");
                    //web.Groups["skyteam2"].AddUser("adr\pccai", "pccai@adr.svic1", "蔡", "系统维修人员");
    
    
                    //新建子站点
                    string currentTemplate = web.WebTemplate;
                    //web.Webs.Add("Test2", "站点名称2", "站点描述2", 2052, "_GLOBAL_#0", true, false);
    
    
                    //打开子站点
                    SPWeb web2 = site.OpenWeb("Test/Test2");
                    web2.AllowUnsafeUpdates = true;
                    // web2.SiteGroups.Add("skyteam6", memUser, suser, "new skyteam");//新建组
                    // web2.SiteGroups["skyteam6"].AddUser("adr\administrator", "administrator@adr.svic1", "边", "系统维修人员");
    
    
                    //改变站点继承权
                    if (!web2.HasUniqueRoleDefinitions)
                    {
                        web2.RoleDefinitions.BreakInheritance(true, true);
                    }
    
                    //站点继承权改变后重新设置状态
                    web2.AllowUnsafeUpdates = true;
    
    
    
                    //添加权限级别 (Role) 
                    //SPRoleDefinition roleDefinition = new SPRoleDefinition();
                    //roleDefinition.Name = "项目角色";
                    //roleDefinition.Description = "项目角色可以批准所有项目情况.";
                    //roleDefinition.BasePermissions = SPBasePermissions.FullMask ^ SPBasePermissions.ManagePermissions;
                    //web2.RoleDefinitions.Add(roleDefinition);
    
    
                    //更改权限级别 (Permissions) 
                    SPRoleDefinitionCollection roles = web2.RoleDefinitions;
                    SPRoleDefinition roleDefinition1 = roles["读取"];
                    roleDefinition1.BasePermissions = SPBasePermissions.AddListItems |
                        SPBasePermissions.BrowseDirectories |
                        SPBasePermissions.EditListItems |
                        SPBasePermissions.DeleteListItems |
                        SPBasePermissions.AddDelPrivateWebParts;
                    roleDefinition1.Update();
    
    
                    //用户权限分配与定义(New)
                    SPRoleDefinitionCollection roleDefinitions = web2.RoleDefinitions;
                    SPRoleAssignmentCollection roleAssignments = web2.RoleAssignments;
                    SPRoleAssignment roleAssignment = new SPRoleAssignment("adr\administrator", "administrator@Somewhere.com", "Display_Name", "Notes");
                    SPRoleDefinitionBindingCollection roleDefBindings = roleAssignment.RoleDefinitionBindings;
                    roleDefBindings.Add(roleDefinitions["项目角色"]);
                    roleAssignments.Add(roleAssignment);
    
    
                    //权限定义(Old)
                    //SPRoleCollection siteGroups = web2.Roles;
                    //siteGroups.Add("skyteam6", "Description", SPRights.ManageWeb | SPRights.ManageSubwebs);
    
    
                    //获得权限定义
                    SPRoleDefinition sprole = roleDefinitions.GetByType(SPRoleType.Reader);
                    string spname = sprole.Name;
    
    
                    //组权限分配与定义(New)
                    SPRoleDefinitionCollection roleDefinitions1 = web2.RoleDefinitions;
                    SPRoleAssignmentCollection roleAssignments1 = web2.RoleAssignments;
                    SPMember memCrossSiteGroup = web2.SiteGroups["skyteam6"];
                    SPPrincipal myssp = (SPPrincipal)memCrossSiteGroup;
                    SPRoleAssignment myroles = new SPRoleAssignment(myssp);
                    SPRoleDefinitionBindingCollection roleDefBindings1 = myroles.RoleDefinitionBindings;
                    roleDefBindings1.Add(roleDefinitions1["设计"]);
                    roleDefBindings1.Add(roleDefinitions1["读取"]);
                    roleAssignments1.Add(myroles);
    
    
                    //组权限分配与定义(Old)
                    //SPMember member = web2.Roles["skyteam"];
                    //web2.Permissions[member].PermissionMask =
                    //    SPRights.ManageLists | SPRights.ManageListPermissions;
    
    
    
                    //更改列表权限(Old)
                    //SPList list = site.Lists["通知"];
                    //SPPermissionCollection perms = list.Permissions;
                    //SPUserCollection users = site.Users;
                    //SPMember member = users["ADR\pccai"];
                    //list.Permissions[member].PermissionMask = SPRights.AddListItems | SPRights.EditListItems;
    
    
    
                    //  PermissionCollection perc = web.Permissions;
                    //perc.AddUser("adr\administrator", "administrator@adr.srvc1", "title", "Notes", PortalRight.AllSiteRights);
                    // SecurityManager.AddRole(context, "title", "descriptions", PortalRight.ManageSite);
    
    
    
                }
                catch (Exception)
                {
                    throw;
                }
    
            }
    
        }
    }
  • 相关阅读:
    最精简的django程序
    spring+mongo
    从零搭建mongo分片集群的简洁方法
    java对redis的基本操作
    awk输出指定列
    sed输出指定行
    Bash的循环结构(for和while)
    用ffmpeg切割音频文件
    Python判断字符串是否全是字母或数字
    Python函数: any()和all()的用法
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/3471697.html
Copyright © 2011-2022 走看看