如何在SharePoint 2013中使用客户端对象模型获取当前用户组?

时间:2013-11-25 16:35:38

标签: sharepoint sharepoint-2013

我需要根据当前用户组隐藏页面中的元素。

我没有找到任何适用于SharePoint 2013的解决方案来执行此操作。

任何人都可以帮助我吗?

我使用SPServices尝试了这个解决方案,但没有用。

<script type="text/javascript">
$(document).ready(function(){
$().SPServices({
    operation: "GetGroupCollectionFromUser",
    userLoginName: $().SPServices.SPGetCurrentUser(),
    async: false,
    completefunc: function(xData, Status) {
        if($(xData.responseXML).find("Group[Name='Members']").length == 1)
        {
            alert('Member');
            $("#ribbonBox").show();
            $(".ms-siteactions-root").show();
            $("#btnGestor").show();
        }
        else
        {   
            alert('non-Member');
            $("#ribbonBox").hide();
            $(".ms-siteactions-root").hide();
            $("#btnGestor").hide();
        }
    }
});
});
</script> 

2 个答案:

答案 0 :(得分:2)

我有这个解决方案来获取当前登录用户的所有组。 您只需要传递一个接收组数组的回调。这是代码和一个示例,它从当前登录的用户向控制台打印每个组的loginName。

function onGetUserGroups(callback) {
    var context = SP.ClientContext.get_current();
    var user = context.get_web().get_currentUser();
    context.load(user);
    context.executeQueryAsync(function () {
        var groups = user.get_groups();
        context.load(groups);
        context.executeQueryAsync(function () {
            var groupArray = [];
            var groupEnumerator = groups.getEnumerator();
            while (groupEnumerator.moveNext()) {
                groupArray.push(groupEnumerator.get_current());
            }
            callback(groupArray);
        });
    });
};

// Example:
onGetUserGroups(function (groups) {
    for (var i = 0, len = groups.length; i < len; i++) {
        console.log(groups[i].get_loginName());
    }
});

答案 1 :(得分:1)

我找到了另一种方式,对我有用:

<script type="text/javascript">
var loggedinUserGroup;
$(document).ready(function() { 
     Getrolesforuser();
     alert(loggedinUserGroup);
});

function Getrolesforuser()
{
     loggedinUserGroup="";
     $().SPServices({  
        operation: "GetGroupCollectionFromUser",  
        userLoginName: $().SPServices.SPGetCurrentUser(),  
        async: false,  
        completefunc: function(xData, Status) 
        { 
            $(xData.responseXML).find("Group").each(function(){
              loggedinUserGroup = $(this).attr("Name");
              if(loggedinUserGroup=="Membros de Classificados"){
                $("#btnGestor").remove();
              }
              if(loggedinUserGroup=="Proprietários do Site"){
                $("#ms-designer-ribbon").hide();
              }
            });
         }
     }); 
}

</script>