zoukankan      html  css  js  c++  java
  • Group (SharePoint group, domain group ) contain current user

        private bool AddUserIntoGroup(SPWeb web, string sGroupName, int iUserID)
        {
            bool res = false;
            try
            {
                web.AllowUnsafeUpdates = true;
                SPGroup oGroup = web.SiteGroups[sGroupName];
                SPUser oUser = web.AllUsers.GetByID(iUserID);
                if (oUser != null)
                {
                    oGroup.AddUser(oUser);
                    oGroup.Update();
                    res = true;
                }
                web.Update();
            }
            catch { }
            return res;
        }
        private bool CreateSiteGroup(SPWeb rootWeb, string sGroupName, string sGroupDescription)
        {
            bool res = false;
            try
            {
                rootWeb.AllowUnsafeUpdates = true;
                SPGroupCollection collGroups = rootWeb.SiteGroups;
                string sLoginName = rootWeb.CurrentUser.LoginName;
                SPUser oUser = rootWeb.SiteUsers[sLoginName];
                SPMember oMember = rootWeb.SiteUsers[sLoginName];
                collGroups.Add(sGroupName, oMember, oUser, sGroupDescription);
                res = true;
                rootWeb.Update();
            }
            catch (Exception ex)
            {
                Response.Write("Error:" + ex.Message + "<br/>");
                return false;
            }
            return res;
        }
        private void DeleteSiteGroup(SPWeb web, string groupName)
        {
            try
            {
                web.AllowUnsafeUpdates = true;
                SPGroupCollection groups = web.SiteGroups;
                groups.Remove(groupName);
                web.Update();
            }
            catch { }
        }
        private bool IsContainCurrentUser(object obj)
        {
            bool result = false;
            if (obj == null)
            {
                return false;
            }
            SPSite securitySite = null;
            SPWeb securityWeb = null;
            SPWeb tempWeb = null;
            try
            {
                SPFieldUserValueCollection approversCollection;
                SPWeb web = SPContext.Current.Web;
                web.AllowUnsafeUpdates=true;
    
                bool groupFlag = false;
                string groupName = "Grp" + Guid.NewGuid().ToString();
                // Response.Write("groupName: " + groupName + "<br/>");
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (securitySite = new SPSite(SPContext.Current.Site.ID))
                    {
                        using (securityWeb = securitySite.RootWeb)
                        {
                            groupFlag = CreateSiteGroup(securityWeb, groupName, "");
                            //Response.Write("groupFlag: " + groupFlag.ToString() + "<br/>");
    
                        }
                    }
                });
    
                approversCollection = (SPFieldUserValueCollection)obj;
                int id = SPContext.Current.Web.CurrentUser.ID;
                foreach (SPFieldUserValue spFieldUserValue in approversCollection)
                {
                    if (spFieldUserValue.User == null)
                    {
                        //Response.Write("Group" + spFieldUserValue.LookupValue+ "<br/>");
                        if (web.SiteGroups[spFieldUserValue.LookupValue].ContainsCurrentUser)
                        {
                            result = true;
                            break;
                        }
                    }
                    else
                    {
                        if (spFieldUserValue.LookupId == id)
                        {
                            result = true;
                            break;
                        }
                        else
                        {
                            AddUserIntoGroup(securityWeb, groupName, spFieldUserValue.LookupId);
                        }
                    }
                }
    
                //System.Threading.Thread.Sleep(500);
                 tempWeb = SPContext.Current.Site.OpenWeb();
                if (!result)
                {
                    //validate domain user has current user
                    if (groupFlag)
                    {
                        //Response.Write(SPContext.Current.Web.SiteGroups[groupName].Users.Count);
    
                        SPGroup group = tempWeb.SiteGroups[groupName];
                        if (group.ContainsCurrentUser)
                        {
                            result = true;
                        }
                    }
    
                }
                //delete group
                DeleteSiteGroup(securityWeb, groupName);
            }
            catch (Exception ex)
            {
                //return false;
                Response.Write("error:" + ex.Message);
            }
            finally
            {
                if (securityWeb != null)
                {
                    securityWeb.Dispose();
                    securityWeb = null;
                }
                if (securitySite != null)
                {
                    securitySite.Dispose();
                    securitySite = null;
                }
                if (tempWeb != null)
                {
                    tempWeb.Dispose();
                    tempWeb = null;
                }
            }
            return result;
        }

    用法:bool flag=!IsContainCurrentUser(sourceItem["阅读人员"]);

  • 相关阅读:
    win10快速搭建git服务
    java字节流转对象,应用于协议解析
    产品设计-后台管理权限设计RBAC
    Git :fatal: 错误提示解决办法
    初学git,出现错误:fatal: Not a git repository (or any of the parent directories): .git
    css 清除浮动
    asp.net连接SQL SERVER 2012的方法
    c#的序列化与反序列化
    .NET三层架构例子超链接可以点击显示内容页面
    ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容
  • 原文地址:https://www.cnblogs.com/gzh4455/p/3069468.html
Copyright © 2011-2022 走看看