2013-11-25 79 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()); 
    } 
}); 
相關問題