Альтернатива для EnsureUser в клиентской объектной модели SharePoint
Мне нужно получить LookUpId пользователя в SharePoint 2010, используя объектную модель клиента. Я могу получить его с помощью метода EnsureUser, но этот метод добавляет пользователя на веб-сайт SharePoint, если пользователь недоступен для сайта. Моё требование - получить LookupId без добавления пользователя в SharePoint. Есть ли альтернативный способ получить его? LookupId без использования метода EnsureUser? Если нет, то после получения LookupId с использованием метода EnsureUser мы можем удалить пользователя с сайта SharePoint?
Ценю ваши предложения.
1 ответ
Решение
Свойство Web.SiteUserInfoList получает список UserInfo семейства сайтов, которое содержит веб-сайт.
Следующий код демонстрирует, как получить userInfo (включая userId
свойство) по userName:
function getUserInfo(userName,Success,Error)
{
var context = new SP.ClientContext.get_current();
var userInfoList = context.get_web().get_siteUserInfoList();
var query = new SP.CamlQuery();
var viewXml = "<View> \
<Query> \
<Where> \
<Eq><FieldRef Name='UserName' /><Value Type='Text'>" + userName + "</Value></Eq> \
</Where> \
</Query> \
<RowLimit>1</RowLimit> \
</View>";
query.set_viewXml(viewXml);
var items = userInfoList.getItems(query);
context.load(items,'Include(Deleted,Department,EMail,FirstName,ID,IsActive,IsSiteAdmin,JobTitle,LastName,MobilePhone,Name,Notes,Office,Picture,SipAddress,UserName,WebSite,WorkPhone)');
context.executeQueryAsync(function(){
if(items.get_count() > 0) {
var item = items.itemAt(0);
Success(item.get_fieldValues());
}
else {
Success(null);
}
},
Error
);
}
//Usage
getUserInfo('username@tenant.onmicrosoft.com',function(userInfo){
console.log('User Id: ' + userInfo.ID);
},
function(sender,args){
console.log(args.get_message());
});