Получить группу текущих пользователей с помощью клиентской объектной модели на стороне клиента javascript SP 2010 - PullRequest
4 голосов
/ 21 июня 2011

Я пытаюсь получить имя группы текущего пользователя, к которой он принадлежит. Я не смог найти метод / свойство, которое предоставляет эту информацию. Я только смог получить имя пользователя текущего пользователя. Есть ли свойство, которое предоставляет мне эту информацию, которую я не вижу?

Ответы [ 2 ]

4 голосов
/ 24 июля 2011

Не существует прямого метода для возврата групп для текущего пользователя через javascript.

Вот сообщение для дискуссионной группы MSDN, в котором описывается способ возврата этой информации.Если вы хотите узнать имя группы для проверки прав доступа, то здесь есть обходной путь .

В общем:

context = new SP.ClientContext.get_current(); 
web = context.get_web();
var value = web.get_effectiveBasePermissions();

Если вам нужно имя группы, к сожалению, нетнет прямого способа сделать это.Но мы можем получить текущего пользователя и получить коллекцию пользователей для одной группы.Затем вы можете проверить коллекцию пользователей из одной группы, чтобы увидеть, содержит ли она текущего пользователя.

  1. Получить текущего пользователя: пример

  2. Получить коллекцию группы для текущей сети: пример

  3. Получить указанную группу

    var groupCollection = clientContext.get_web().get_siteGroups();
    // Get the visitors group, assuming its ID is 4.
    visitorsGroup = groupCollection.getById(4);
    
  4. Получитьпользователи для группы

    var userCollection = visitorsGroup.get_users();
    
  5. Проверьте коллекцию пользователей, чтобы увидеть, содержит ли она указанного пользователя.

Для простой демонстрации вы можетесм. следующий документ .

2 голосов
/ 02 марта 2015

Как указал Вадим Гремячев здесь вы можете получить текущего пользователя var currentUser = currentContext.get_web().get_currentUser(), затем получить все группы var allGroups = currentWeb.get_siteGroups();

Отсюда вы можете просмотреть группу, чтобы увидеть, находится ли ваш пользователь в текущей группе. Поэтому, если у вас есть список групп, которые вы хотите проверить, Участники, Владельцы, Зрители, просто используйте этот метод, чтобы определить, есть ли они в каждой группе.

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);    
        var group = allGroups.getByName(groupName);
        currentContext.load(group);    
        var groupUsers = group.get_users();
        currentContext.load(groupUsers);    
        currentContext.executeQueryAsync(OnSuccess,OnFailure);

        function OnSuccess(sender, args) {
            var userInGroup = false;
            var groupUserEnumerator = groupUsers.getEnumerator();
            while (groupUserEnumerator.moveNext()) {
                var groupUser = groupUserEnumerator.get_current();
                if (groupUser.get_id() == currentUser.get_id()) {
                    userInGroup = true;
                    break;
                }
            }  
            OnComplete(userInGroup);
        }

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

// example use
window.IsCurrentUserMemberOfGroup("Members", function (isCurrentUserInGroup){
    if(isCurrentUserInGroup){
      console.log('yep he is');
    } else {
      console.log('nope he aint');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...