Альтернатива для 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());
});    
Другие вопросы по тегам