我有一个要求,我需要检查用户是否是任何特定SharePoint组的成员。为此,我使用下面的代码:
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);
currentContext.load(allGroups,'Include(users)');
currentContext.executeQueryAsync(OnSuccess,OnFailure);
function OnSuccess(sender, args) {
// Success function callback
OnComplete(userInGroup);
}
function OnFailure(sender, args) {
OnComplete(false);
}
}
如果当前用户是网站集管理员,那么此代码工作正常,但如果用户不是网站集管理员,那么这不起作用并给我以下错误:
access denied. you do not have permission to perform this action or access this resource
此错误发生在currentContext.executeQueryAsync(OnSuccess,OnFailure);
任何人都可以帮助我做错了什么以及为什么我会收到此错误?有没有解决方法呢?
提前致谢!
答案 0 :(得分:0)
此代码对我不起作用,我不确定此代码或环境中出现了什么问题。所以我用以下代码替换了它,我能够满足我的要求:
<强>代码强>
var IsCurrentUserMemberOfGroup = function (groupName, OnComplete) {
var userInGroup = false;
$().SPServices({
operation: "GetGroupCollectionFromUser",
userLoginName: $().SPServices.SPGetCurrentUser(),
async: false,
completefunc: function (xData, Status) {
if ($(xData.responseXML).find("Group[Name='" + groupName + "']").length == 1) {
userInGroup = true;
}
}
});
OnComplete(userInGroup);
}
所以基本上我在这里使用SPServices并用SPServices代码替换代码。