在我们的共享服务器场中,我们分为两组:
用户-包含我们应用程序的所有用户(包括管理员)
管理员-包含具有管理员权限的用户
我目前正在尝试拒绝“用户”组中所有用户的系统页面(_layouts /文件)访问,以防止在不通过相应的Webpart UI的情况下修改列表等。为此,我在“查看应用程序页面”上为DENY添加了权限策略。这按正常用户的预期工作,但问题是它还会阻止管理员访问列表等。
我曾尝试将所有内容授予Admins组,但拒绝仍然会覆盖它,从而阻止访问。
当管理员的用户被另一个组阻止时,如何授予管理员访问权限?
function IsCurrentUserMemberOfGroups(groups, OnComplete) {
var currentContext = new SP.ClientContext.get_current();
var currentWeb = currentContext.get_web();
var currentUser = currentWeb.get_currentUser();
var isAdmin = currentUser.get_isSiteAdmin();
var oGroups = currentUser.get_groups();
currentContext.load(isAdmin);
currentContext.load(currentUser);
currentContext.load(oGroups);
currentContext.executeQueryAsync(OnSuccess, OnFailure);
function OnSuccess(sender, args) {
var userInGroup = false;
console.log('Admin check' + isAdmin);
if (!isAdmin) {
var groupEnumerator = oGroups.getEnumerator();
while (groupEnumerator.moveNext()) {
var oGroup = groupEnumerator.get_current();
var groupTitle = oGroup.get_title();
console.log(groupTitle);
$.each(groups, function (index, value) {
if (value == groupTitle) {
console.log('user in group ' + groupTitle);
userInGroup = true;
}
});
if (userInGroup)
break;
}
}
OnComplete(userInGroup);
}
function OnFailure(sender, args) {
OnComplete(false);
}
}
然后,将用户重定向到一个友好的页面。
将脚本添加到母版页或添加为javascript链接,因为它需要在全局范围内运行。