使用SP 2010 javascript客户端对象模型获取当前用户组

时间:2011-06-21 15:54:30

标签: sharepoint sharepoint-2010

我正在尝试获取他们所属的当前用户的SharePoint组名称。我无法找到提供该信息的方法/属性。我只能获得当前用户的用户名。是否有财产可以向我提供我未看到的这些信息?

2 个答案:

答案 0 :(得分:4)

没有通过javascript为当前用户返回组的直接方法。

以下是MSDN讨论组的post,其中介绍了返回此信息的方法。  如果您想知道用于检查权限的组名称,则解决方法为here

基本上是这样的:

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

如果您需要群组名称,很遗憾没有直接的方法可以做到这一点。但是我们可以获得当前用户并获得一个组的用户集合。然后,您可以检查一个组中的用户集合,以查看它是否包含当前用户。

  1. 获取当前用户:example

  2. 获取当前网络的群组:example

  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. 检查用户集合以查看它是否包含指定的用户。

  6. 对于简单的演示,您可以看到以下document

答案 1 :(得分:2)

如Vadim Gremyachev here所示,您可以获取当前用户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');
    }
});