我正在尝试获取他们所属的当前用户的SharePoint组名称。我无法找到提供该信息的方法/属性。我只能获得当前用户的用户名。是否有财产可以向我提供我未看到的这些信息?
答案 0 :(得分:4)
没有通过javascript为当前用户返回组的直接方法。
以下是MSDN讨论组的post,其中介绍了返回此信息的方法。 如果您想知道用于检查权限的组名称,则解决方法为here。
基本上是这样的:
context = new SP.ClientContext.get_current();
web = context.get_web();
var value = web.get_effectiveBasePermissions();
如果您需要群组名称,很遗憾没有直接的方法可以做到这一点。但是我们可以获得当前用户并获得一个组的用户集合。然后,您可以检查一个组中的用户集合,以查看它是否包含当前用户。
获取当前用户:example
获取当前网络的群组:example
获取指定的组
var groupCollection = clientContext.get_web().get_siteGroups();
// Get the visitors group, assuming its ID is 4.
visitorsGroup = groupCollection.getById(4);
获取论坛用户
var userCollection = visitorsGroup.get_users();
检查用户集合以查看它是否包含指定的用户。
对于简单的演示,您可以看到以下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');
}
});