我需要根据当前用户组隐藏页面中的元素。
我没有找到任何适用于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 :(得分: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>