2013-11-25 49 views
1

我需要根据当前用户组隐藏页面元素。如何在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> 

回答

0

我找到了另一种方式,并为我工作:

<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> 
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()); 
    } 
}); 
相关问题