2012-11-20 63 views
2

我正在嘗試使用SPServices jQuery庫爲Sharepoint 2007網站上的用戶讀取權限掩碼。我可以成功獲取權限掩碼的號碼,但我無法將權限掩碼響應轉換爲有意義的內容。從權限掩碼中爲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

我不能醃肉讓我的頭nd這些數字如何等同於用戶實際擁有的權限。使用http://jamestsai.net/Blog/post/Understand-SharePoint-Permissions-Part-1-SPBasePermissions-in-Hex2c-Decimal-and-Binary-The-Basics.aspx的權限表,它似乎與用戶實際擁有的權限不匹配。

我現在不在工作,所以我會用更多的信息更新這個信息,但是任何人都可以從我目前掌握的信息中發現我做錯了什麼嗎?

+0

您使用SPServices調用哪個SharePoint Web服務? – jpumford

+0

GetPermissionCollection是SharePoint網絡服務 - 我已將Javascript代碼包含在我的編輯中,謝謝。 – KyokoHunter

回答

2

按位比較就是你所追求的。

例如

var permissionMask = -2013006751; 
var viewPages = 131072; // 100000000000000000 
if((permissionMask & viewPages)===viewPages) 
{ 
    alert('person has view pages permission'); 
} 

請參閱here for a more detailed explanation

+0

謝謝 - 我試圖爲同樣的想法建立一個更復雜的方法,我嘗試了它,它的工作原理。 – KyokoHunter

+0

是的,我一直在那裏:) – Nat