用Javascript获取SharePoint当前登录用户的用户名及Group信息

      在开发一个要部署到SharePoint里的程序的时候,遇到一个需求,要求用纯Javascript的方式获取当前登录到SharePoint的用户信息。

      这里关键的一个问题是如何获取当前登录的用户名,有了用户名以后,就可以用WebService查询该用户名所属的组。

      由于SharePoint的页面中,每个页面右上头都有一个Welcome信息(例如Welcome Domain/Logoned User Name), 所以开始想到的一个比较不正统的办法就是用JavaScript遍历页面的<a></a>元素,如果遇到<a>元素里面的内容是以Welcome开头的,则认为Welcome后面紧跟着的就是当前登录用户的用户名。

  1.       function getCurrentUser()
  2.       {
  3.              var tags = document.getElementsByTagName('a');
  4.              for (var i=0; i < tags.length; i++)
  5.             {
  6.                   if(tags[i].innerText.substr(0,7) == 'Welcome')                
  7.                           return tags[i].innerText.substr(8,tags[i].innerText.length);
  8.                    return null;
  9.               }
  10.         }

      后来在看了一篇文章《WSS 3.0: getting the current user login name via javascript》后,发现有个更合理的方法来获取当前的登录用户信息。

       在SharePoint页面,Welcome control都给出了一个_spUserId变量并保存了当前登录用户的ID,有此,我们就可以根据这个ID通过WebService获取该用户的信息。以下帖了示例代码,其中SPAPI_Core.js、SPAPI_Lists.js和SPAPI_UserGroup.js文件上传到SharePoint的适当的library里,并对应好路径。这三个文件是SPAPI_Javascript的一部份,SPAPI是对javascript调用webservice的一系列方法的封装,整个文件可以从http://darrenjohnstone.net/网站的DownLoads下下载,也可在我的资源里下载

  1. <script language="javascript" src="Shared%20Documents/SPAPI_Core.js"></script>
  2. <script language="javascript" src="Shared%20Documents/SPAPI_Lists.js"></script>
  3. <script language="javascript" src="Shared%20Documents/SPAPI_UserGroup.js"></script>
  4. <script language="JavaScript">
  5.     function getCurrentUserName()   
  6.     {   
  7.         var curUserName = null;
  8.         var lists = new SPAPI_Lists('')   
  9.         var items = lists.getListItems(   
  10.             'User Information List',   
  11.             '',   
  12.             '<Query><Where><Eq><FieldRef Name="ID"/><Value Type="Counter">' + _spUserId + '</Value></Eq></Where></Query>',  // query   
  13.             '<ViewFields><FieldRef Name="Name"/></ViewFields>',   
  14.             1,  // rowLimit   
  15.             ''  // queryOptions   
  16.         );   
  17.       
  18.         if (items.status == 200)   
  19.         {   
  20.             var rows = items.responseXML.getElementsByTagName('z:row');   
  21.       
  22.             if (rows.length == 1)                  
  23.                 curUserName = rows[0].getAttribute('ows_Name');                         
  24.         }
  25.            
  26.         return curUserName;
  27.     }  
  28.     
  29.     function getGroupCollection( userName )
  30.     {
  31.         var arrGroup = new Array();
  32.         var userGroup = new SPAPI_UserGroup( '' )
  33.         var groupItems = userGroup.getGroupCollectionFromUser( userName )
  34.         
  35.         if( groupItems.status == 200 )
  36.         {
  37.             var groupTags = groupItems.responseXML.getElementsByTagName( 'Group' );
  38.             for( var i=0; i < groupTags.length; i++ )           
  39.                 arrGroup.push( groupTags[i].getAttribute("Name") )          
  40.         }
  41.         return arrGroup;
  42.     }
  43.           
  44.     // Test code   
  45.     var userName = getCurrentUserName(); 
  46.     var groups = getGroupCollection( userName )
  47.     
  48.     document.writeln( "UserName: " + userName + "<p />" )
  49.     document.write(  "Groups:" + groups );
  50. </script>

        将上述代码部署到SharePoint对应页面的Editor Content Web Part 的内容里即可。最后,要感谢Avrin Song的支持!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值