`
laintoday
  • 浏览: 64336 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

将新增用户添加到指定用户组

 
阅读更多

在oa系统中,对于员工信息,设计的是让行政\人事的同事,自行维护一张名为“员工信息”的列表。后端通过制定程序,来达到行政\人事所需的要求。于是就产生了"将在员工信息列表中新增员工添加到指定组"的需求。(其实这个之前一直是手工输入,但觉得有空的时候,还是应该自动化下,所以。。)

关键代码如下:

 

//从域中获取该用户
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://domain", @"username", "password", AuthenticationTypes.Secure);
DirectorySearcher ds = new DirectorySearcher(directoryEntry);
ds.Filter = "(&(objectClass=User))";
SearchResultCollection collection = ds.FindAll();
                      
foreach (SearchResult sr in collection)
{
         System.DirectoryServices.DirectoryEntry det = sr.GetDirectoryEntry();
         System.DirectoryServices.PropertyCollection pc = det.Properties;
                        

         if (det.Properties["mail"].Value != null && det.Properties["displayName"].Value != null && det.Properties["userPrincipalName"].Value!=null)
         {
                   if (det.Properties["displayName"].Value.ToString().Equals(employeeName))
                   {
                           string tmpLoginName = det.Properties["userPrincipalName"].Value.ToString();
                           try 
                          {
                                string[] sArray = tmpLoginName.Split(new char[1] { '@' });
                                       
                                 try 
                                 {
                                       newUser = web.EnsureUser(@"domain\"+sArray[0]);
                                          
                                  }catch(Exception ex)
                                   {
                                           Console.WriteLine(ex.stacktrace);
                                   }
                                       

                                   }catch(Exception ex)
                                   {
                                       Console.WriteLine(ex.Message);
                                   }

                                   break;

                               }
                            }
                           
                       } 


           SPGroupCollection groups = web.Groups;
           foreach (SPGroup tmpgroup in groups)
           {
                 if (tmpgroup.Name.Equals(groupName))
                 {
                       destGroup = tmpgroup;
                       break;

                 }
            }

            //将新建员工加入指定组
            if (destGroup != null)
            {
                destGroup.AddUser(newUser.LoginName, newUser.Email, newUser.Name, newUser.Notes);
                        
             }

 需要引用dll: System.DirectoryServices。

 

 其中SPWeb.EnsureUser可以替换为SPWeb.AllUsers.Add(),直接用搜到的用户的域帐号信息来添加。

 

附上EnsureUser的代码:

 

 

 try
    {
        SPUser byLoginNoThrow = this.SiteUsers.GetByLoginNoThrow(logonName);
        if (byLoginNoThrow != null)
        {
            return byLoginNoThrow;
        }
    }
    catch
    {
    }
    if (!this.DoesUserHavePermissions(SPBasePermissions.BrowseUserInfo))
    {
        SPGlobal.HandleUnauthorizedAccessException(new UnauthorizedAccessException());
    }
    SPPrincipalInfo info = SPUtility.ResolvePrincipalInternal(this, null, null, logonName, SPPrincipalType.SecurityGroup | SPPrincipalType.User, SPPrincipalSource.All, null, false, true);
    if (info == null)
    {
        throw new SPException(SPResource.GetString("UserCouldNotBeFound", new object[] { logonName }));
    }
    if (info.PrincipalId < 0)
    {
        this.SiteUsers.Add(info.LoginName, info.Email, info.DisplayName, string.Empty);
    }
    return this.SiteUsers[info.LoginName];
 

再附上"在console程序里使用SPWeb.EnsureUser"无效的原因分析和解决方法:

http://blog.mastykarz.nl/inconvenient-programmatically-sharepoint-users-spweb-ensureuser/

 

分享到:
评论

相关推荐

    linux用户创建

    将用户切换到nagios 用户,添加nagios的访问用户: su nagios htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin 系统会提示输入两次密码,例如两次输入nagios。 注: 这是第一次创建用户,需要“-c”...

    Excel新增工具集

    5、把工作表内容分类群发到邮件与手机:软件首先将工作表记录分类另存为工作簿文件,然后将这些文件以附件形式群发到指定的类别负责人邮箱。例如,年级成绩表由各班学生成绩组成,软件首先把本表另存为各班工作簿,...

    ECShop v2.6.2 beta2 UTF-8.rar

     [新增] 新增促销礼包模块,能够将多个商品组合销售  [新增] 新增商品购买价格根据购买数量依次变更的功能  [新增] 新增商品详情页增加商品分类下的上一个 下一个商品  [新增] 新增流程中显示购物车中商品关联...

    ECShop v2.6.2 beta2 GBK.rar

     [新增] 新增促销礼包模块,能够将多个商品组合销售  [新增] 新增商品购买价格根据购买数量依次变更的功能  [新增] 新增商品详情页增加商品分类下的上一个 下一个商品  [新增] 新增流程中显示购物车中商品关联...

    蓝色魔法论坛 正式版v5.1

    14. 可发表限制指定用户组浏览的帖子 15. 可调整用户组在首页显示图例的顺序 16. 首页会员生日提醒功能(可选择是否开启) 17. 登录时选择风格 18. 编辑公告功能 19. 缓存风格列表并可以设定风格名称 20. 后台...

    Jira管理员使用手册最详细版

    并将需要的”问题类型”添加到我们的”问题类型方案”中: 3 4、添加完保存的效果,如下图: 3 5、将“问题类型方案”,应用的项目: 4 第二章、自定义字段直接到项目 5 目标1、在”创建问题”界面增加一个“多用户...

    KesionCMS 万能建站系统 建站源码

    4、 新增个人/企业空间联系方式可以设置只有指定的用户组才可以查看 5、 后台会员管理增加可以手工将通过充值卡获得的VIP用户组,到期后更新为免费会员组 6、后台增加给会员批量发送手机短信功能 7、门户圈子增加...

    AnyphpMvc 1.2.zip

    控制不同用户组的访问权限;自动生成列表、新增、修改等表单。AnyphpMvc能够智能的完成这一切。 AnyphpMvc 1.2 更新内容:2010-10-11 增强开发助手,实现以下功能 1 可以在线创建数据库,同时默认主键为ID 2 ...

    飞哈远程桌面连接 v3.0.zip

    双击快速定位到指定远程服务器,还有一些新功能,总之这个版本非常值得更新。 2.8版本更新  终于可以共享指定磁盘了 2.7版本更新 1、新增3种服务器状态,连接不上,可以...

    信捷TouchWin触摸屏编程软件Twin V2.D.3k最新版.rar

    10、新增画面粘贴时,先指定画面ID号功能;11、提供画面导出功能,以位图的形式保存图片,名称为画面名称 ID;12、新增C语言的加密功能,加密后,用户需要输入密码才能看到脚本内容;13、C语言脚本的运算符,以红色...

    Art2008CMS 7.0 GBK.rar

    9、新增会员注册时可选择用户组,后台可指定是否开放用户组会员注册; 10、新增自定义字段中可以添加上传文件类型的字段; 11、新增自定义SQL标签中可实现分列显示,可实现更多更复杂的显示效果; 12、修改所有...

    Art2008CMS 7.0 UTF-8.rar

    9、新增会员注册时可选择用户组,后台可指定是否开放用户组会员注册; 10、新增自定义字段中可以添加上传文件类型的字段; 11、新增自定义SQL标签中可实现分列显示,可实现更多更复杂的显示效果; 12、修改所有...

    JIRA 从入门到精通.doc

    Import & Export—&gt;Restore Data from XML,通过此处可以将已经备份的数据重新恢复到系统中,与Backuo Data to XML相对应。 数据导入的时间视文件大小而定,导入成功之后显示如下页面,并且需要重新登录系统: 3、 ...

    佳易团购APP系统 v4.0.zip

    新增功能:新增手机端app 佳易商城系统使用说明: 解压后将jiayi9文件夹下的所有文件上传到空间中...26、用户管理:可编辑用户的信息,并查看指定用户的完整消费记录。     相关阅读 同类推荐:电子商务系统

    DayuCMS网站内容管理系统 1.526.rar

    防止空标签被黑客利用5、修复seach插件,主要修复在未指定字段查询查不到的结果问题, 6、新增网站地图生成;支持两种地图 xml 和txt格式7、修复简单编辑器不支持字体颜色等代码的问题8、修复前台调用百度编辑器...

    精易模块[源码] V5.15

    3、新增“编码_Ansi到十进制_文本型”此代码由易友【菜虫】提供,将Ansi码转换为十进制,如:将“精易论坛”转换后将返回格式如:“&#48811&#53975&#49883&#52403”。 4、新增“目录_取运行目录”取当前被执行的易...

    浩辰CAD2008标准版part1(1/2)

     设置界面上新增了预览窗口,用户可直观的了解到当前设置打印的大致情形。在选择打印窗口时浩辰ICAD2008i会将当前已经打印区域亮显,方便用户确认选择。  为了让用户更加便于控制打印样式,浩辰ICAD2008i提供了...

    眼睛卫士光放3.21版本

    答:您可以设置用户权限,把这些用户设置在user用户组里。这样该用户就没有办法结束眼睛卫士进程了。 ⒋ 问:万一忘记密码,进不去眼睛卫士,怎么办? 答:您可以在开机时按住F8,进入安全模式,再删除眼睛卫士...

    AnyphpMvc(轻便的PHP框架)

    控制不同用户组的访问权限;自动生成列表、新增、修改等表单。AnyphpMvc能够智能的完成这一切。 AnyphpMvc与常规PHP MVC框架的对比 AnyphpMvc面向群体 AnyphpMvc合适我用吗 怎样直接执行SQL语句 $Admin = new ...

    eas供应链dep案例集

    新增及调整字段 EASSCMA1P0021 物料增加型号字段并携带到相关单据 针对“物料”基础资料,供应链客户提出将其中物料的“规格型号”字段改为“规格”和“型号”两个字段,供应链涉及到物料资源的地方全部要改,以...

Global site tag (gtag.js) - Google Analytics