如何仅使用REST / Javascript检查当前用户是否属于sharepoint AD组?
答案 0 :(得分:1)
目前,我通过在SP组中添加安全组然后检查以下代码中提到的属性来实现它。但唯一的问题是,我有大量的网站收集,所以无论我在哪里创建一个SP组&然后在其中添加我的安全组。
'-'
答案 1 :(得分:0)
您可以使用以下功能执行此操作:
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);
var group = allGroups.getByName(groupName);
currentContext.load(group);
var groupUsers = group.get_users();
currentContext.load(groupUsers);
currentContext.executeQueryAsync(OnSuccess,OnFailure);
function OnSuccess(sender, args) {
var userInGroup = false;
var groupUserEnumerator = groupUsers.getEnumerator();
while (groupUserEnumerator.moveNext()) {
var groupUser = groupUserEnumerator.get_current();
if (groupUser.get_id() == currentUser.get_id()) {
userInGroup = true;
break;
}
}
OnComplete(userInGroup);
}
function OnFailure(sender, args) {
OnComplete(false);
}
}
用法:
function CheckUserGroup()
{
IsCurrentUserMemberOfGroup("YourGroupName", function (isCurrentUserInGroup) {
if(isCurrentUserInGroup)
{
//Do something
}
else
{
//Do something else
}
});
}
答案 2 :(得分:0)
您可以尝试使用REST编写此apporach。
<script src="https://code.jquery.com/jquery-1.11.2.min.js" type="text/javascript" ></script>
<script type="text/javascript">
$(function(){
isMember("Test Group");
});
function isMember(groupName){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/sitegroups/getByName('"+ groupName +"')/Users?$filter=Id eq " + _spPageContextInfo.userId,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function(data){
if(data.d.results[0] != undefined){
// Exist in group
}
else
{
// Does not exist
}
}
});
}
</script>
答案 3 :(得分:0)
这可以通过以下功能
来实现备注:它仅适用于&#34;当前用户&#34;但在很多时候这已经足够了。
我添加了Jquery promise创建,因此需要Jquery,这是为了让函数在IE11中工作)
function _isCurrentUserInGroup(groupId) {
var promise = $.Deferred(function () {
var endpoint;
endpoint = _spPageContextInfo.webAbsoluteUrl + "/_api/web/sitegroups(" + groupId + ")/CanCurrentUserViewMembership"
jQuery.ajax({
"url": endpoint,
"type": "GET",
"contentType": "application/json;odata=verbose",
"headers": {
"Accept": "application/json;odata=verbose"
}
}).then(function (result) {
promise.resolve(result.d.CanCurrentUserViewMembership);
}, function (sender, args) {
console.log(args.get_message());
soc_appinsights.appInsights.trackException(args.get_message());
promise.reject(sender, args);
});
});
return promise;
}
可以像这样调用:
_isCurrentUserInGroup(20).then(function(result)
{ console.log(result); //true or false. } ,
function (sender, args) { console.log(args.get_message(););
您需要知道该组的ID,但可以轻松检索。