最近需求要用javascript 取得當前用戶的組和權限, 首先先要取得用戶名
取得用戶名有2種方法
1 通過頁面上的welcome信息
2 通過sharepoint webservice
方法1:
<div>
UserName:
<input type="text" id = "userName"/>
</div>
<script language="JavaScript">
function getCurrentUser()
{
var tags = document.getElementsByTagName('a');
for (var i=0; i < tags.length; i++)
{
if(tags[i].innerText.substr(0,7) == 'Welcome')
document.getElementById('userName').value = tags[i].innerText.substr(8,tags[i].innerText.length);
}
}
getCurrentUser();
</script>
方法2:通過不同的webservice有兩種方式
2.1 通過_sqUserId從User Infomation List中取得,
不過這個方法有個缺點,這個列表只存在於頂級網站中,而且需要用戶有權限
<div>
UserName:
<input type="text" id = "userName"/>
</div>
<script type="text/javascript" src="Shared Documents/SPAPI_Core.js">
</script>
<script type="text/javascript" src="Shared Documents/SPAPI_Lists.js">
</script>
<script type="text/javascript">
function getCurrentUser()
{
var lists = new SPAPI_Lists('')
var items = lists.getListItems(
'User Information List',
'',
'<Query><Where><Eq><FieldRef Name="ID"/><Value Type="Counter">' + _spUserId + '</Value></Eq></Where></Query>', // query
'<ViewFields><FieldRef Name="Name"/></ViewFields>',
1, // rowLimit
'' // queryOptions
);
if (items.status == 200)
{
var rows = items.responseXML.getElementsByTagName('z:row');
document.getElementById('userName').value = rows[0].getAttribute('ows_Name');
}
}
getCurrentUser();
</script>
2.2直接通過如下方法
<div>
UserName:
<input type="text" id = "userName"/>
</div>
<script type="text/javascript" src="Shared Documents/SPAPI_Core.js">
</script>
<script type="text/javascript" src="Shared Documents/SPAPI_Lists.js">
</script>
<script type="text/javascript" src="Shared Documents/SPAPI_UserProfile.js">
</script>
<script type="text/javascript">
function getCurrentUser()
{
var Profile = new SPAPI_UserProfile('http://moss/Dalian/');
var Profiledata = Profile.getUserProfileByName(null);
if(Profiledata.status == 200)
{
var rows = Profiledata.responseXML.getElementsByTagName('PropertyData');
for(var i = 0; i<rows.length; i++)
{
var item = rows[i];
var itemName = item.getElementsByTagName('Name')[0].childNodes[0].nodeValue;
if(itemName == "AccountName")
{
document.getElementById('userName').value = item.getElementsByTagName('Value')[0].childNodes[0].nodeValue;
break;
}
}
}
}
getCurrentUser();
</script>