2011-06-21 59 views
4

我正在尝试获取它们所属的当前用户的SharePoint组名。我一直无法找到提供该信息的方法/属性。我只能得到当前用户的用户名。有没有一个属性为我提供了我没有看到的这些信息?获取当前用户组使用SP 2010 javascript客户端对象模型

+0

我正在通过同样的问题,因为两天后,我无法获得当前用户的角色。你有没有得到解决方案?请分享。 – 2011-06-22 12:20:44

回答

4

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

这是一个post到MSDN讨论组,描述了解决此问题的方法。 如果您想知道用于检查权限的组名,解决方法是here

所以基本上:

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

如果您需要的组名,可惜的是这样做的直接方式。但是我们可以获得当前用户并获得一个组的用户集合。然后,您可以从一个组中检查用户集合,看它是否包含当前用户。

  1. 获取当前用户:example

  2. 获取组集合当前web: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. 检查用户集合以查看它是否包含指定的用户。

对于一个简单的演示,你可以看到以下document

2

正如瓦迪姆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'); 
    } 
}); 
相关问题