2012-11-20 3 views
2

SPServices jQuery 라이브러리를 사용하여 Sharepoint 2007 사이트의 사용자에 대한 사용 권한 마스크를 읽으려고합니다. 나는 성공적으로 사용 권한 마스크에 대한 번호를 얻을 수 있지만 사용 권한 마스크 응답을 의미있는 것으로 변환하는 데 문제가 있습니다. 내가 사용 권한을 얻고있다Sharepoint 2007의 사용 권한 마스크에서 개별 사용 권한 읽기

는 다음과 같은 자바 스크립트를 사용하여 마스크 :

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

각각의 바이너리 값은 (2의 보수)의 사용 가정 : A) 10001000000000111111010001100000 B) 10111100000000111111011011101110

것은 내가 arou 내 머리를 얻을 수 없다 이 숫자가 사용자가 실제로 가지고있는 권한과 동일한 지 확인하십시오. http://jamestsai.net/Blog/post/Understand-SharePoint-Permissions-Part-1-SPBasePermissions-in-Hex2c-Decimal-and-Binary-The-Basics.aspx의 사용 권한 테이블을 사용하면 사용자가 실제로 가지고있는 사용 권한과 일치하지 않는 것 같습니다.

나는 지금 일하고 있지 않다. 그래서 나는 이것을 더 많은 정보로 업데이트 하겠지만, 현재 가지고있는 정보에서 내가 잘못하고있는 것을 누군가 눈치 채실 수 있을까?

+0

SPServices에서 어떤 SharePoint 웹 서비스를 호출 하시겠습니까? – jpumford

+0

GetPermissionCollection은 SharePoint 웹 서비스입니다. 자바 스크립트 코드를 제 편집에 포함 시켰습니다. 감사합니다. – 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