clientcontext.executequeryasync выдает ошибку "Отказано в доступе" в SharePoint 2010

У меня есть требование, в котором мне нужно проверить, является ли пользователь членом какой-либо определенной группы SharePoint. Для этого я использую следующий код:

function IsCurrentUserMemberOfGroup(groupName, OnComplete) {
   var currentContext = new SP.ClientContext.get_current();
   var currentWeb = currentContext.get_web();
   var currentUser = currentContext.get_web().get_currentUser();
   currentContext.load(currentUser);

   var allGroups = currentWeb.get_siteGroups();
   currentContext.load(allGroups);
   currentContext.load(allGroups,'Include(users)');

   currentContext.executeQueryAsync(OnSuccess,OnFailure);

   function OnSuccess(sender, args) {
       // Success function callback  
       OnComplete(userInGroup);
   }

   function OnFailure(sender, args) {
      OnComplete(false);
   }    
}

Если текущий пользователь является администратором семейства сайтов, то этот код работает нормально, но если пользователь не является администратором семейства сайтов, это не работает и выдает ошибку ниже:

access denied. you do not have permission to perform this action or access this resource

Эта ошибка происходит в currentContext.executeQueryAsync(OnSuccess,OnFailure);

Может ли кто-нибудь помочь мне, что я делаю неправильно и почему я получаю эту ошибку? Есть ли обходной путь для этого?

Заранее спасибо!

1 ответ

Решение

Этот код не работал для меня, и я не был уверен, что не так в этом коде или в среде. Поэтому я просто заменил это на приведенный ниже код и смог выполнить мое требование:

Код

var IsCurrentUserMemberOfGroup = function (groupName, OnComplete) {
   var userInGroup = false;
   $().SPServices({
       operation: "GetGroupCollectionFromUser",
       userLoginName: $().SPServices.SPGetCurrentUser(),
       async: false,
       completefunc: function (xData, Status) {
            if ($(xData.responseXML).find("Group[Name='" + groupName + "']").length == 1) {
                userInGroup = true;
            }
        }
    });
    OnComplete(userInGroup);
}

Так что в основном здесь я использую SPServices и заменил код на код SPServices.

Другие вопросы по тегам