我正在尝试使用SPServices jQuery库来读取Sharepoint 2007站点上的用户的权限掩码。我可以成功获取权限掩码的数字,但我无法将权限掩码响应转换为有意义的内容。
我使用以下Javascript获取权限掩码:
function getPermissions(url, sobj) {
$().SPServices.defaults.webURL = url;
//FIRST DO SITE
$().SPServices({
operation: "GetPermissionCollection",
async: false,
objectName: url,
objectType: "Web",
completefunc: function(xData, Status){
$(xData.responseXML).find("Permission").each(function(){
sobj.Permissions.push($(this).attr("UserLogin"));
sobj.PermissionsLevel.push($(this).attr("Mask"));
});
}
});
//NOW DO LISTS
for (x in sobj.Lists) {
$().SPServices({
operation: "GetPermissionCollection",
async: false,
objectName: sobj.Lists[x].InternalName,
objectType: "List",
completefunc: function(xData, Status){
$(xData.responseXML).find("Permission").each(function(){
sobj.Lists[x].Permissions.push($(this).attr("UserLogin"));
sobj.Lists[x].PermissionsLevel.push($(this).attr("Mask"));
});
}
});
}
}
以下是几个例子: A)-2013006751 B)-1140590865
这些的二进制值是(假设使用二进制补码): A)10001000000000111111010001100000 B)10111100000000111111011011101110
我无法理解这些数字如何等同于用户实际拥有的权限。使用http://jamestsai.net/Blog/post/Understand-SharePoint-Permissions-Part-1-SPBasePermissions-in-Hex2c-Decimal-and-Binary-The-Basics.aspx权限表,它似乎与用户实际拥有的权限不匹配。
我现在不在工作,所以我会用更多信息更新这个,但是有没有人能从我目前的信息中发现我做错了什么?
答案 0 :(得分:2)
按位比较就是你所追求的。
e.g。
var permissionMask = -2013006751;
var viewPages = 131072; // 100000000000000000
if((permissionMask & viewPages)===viewPages)
{
alert('person has view pages permission');
}