SharePoint - 将权限掩码转换为角色

3

我有一个问题,无法检索列表或站点的权限。我正在使用SharePoint的权限Web服务和GetPermissionCollection方法。 该方法返回类似于以下内容:

<Permission MemberID="4" Mask="1067654015" MemberIsUser="False" MemberGlobal="True" GroupName="Collaboration demo Owners" />

我希望能够将权限掩码转换为其所属的角色(就像在网站上查看权限一样)。

我发现使用UserGroup Webservice,可以检索角色及其基本权限列表。从该服务中获取GetRolesAndPermissionsForSite方法返回类似于以下内容:

<Role ID="1073741829" Name="Full Control" Description="Has full control." Hidden="False" Type="Administrator" BasePermissions="9223372036854775807"....

有没有一种方法将这个BasePermissions转换为掩码以便比较它们?或者有没有更简单的方法将权限掩码转换为它所属的角色(权限级别)?


我的谷歌搜索能力很强:http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/c32bc150-7249-423d-8018-d2f23afc1f3b/ - Kit Menke
1个回答

0

我创建了这个JavaScript样例,感谢@zanlok的回答

我使用了JQuery、SPServices js(http://spservices.codeplex.com/)和这个链接作为掩码代码http://msdn.microsoft.com/en-us/library/dd304243%28PROT.13%29.aspx 希望这可以帮助到你,我做这个是因为我也需要,但它可能也会帮助其他人。

您需要将divid替换为您想要放置html的控件的值,并将LIST NAME HERE替换为列表的名称。

脚本将显示对列表具有访问权限的每个人,并说明他们是否可以读取、添加、更改和删除内容。希望这可以帮助到你。

$('#divid').html('Working...').SPServices({
    operation: "GetPermissionCollection",
    objectName: 'LIST NAME HERE',
    objectType: "List",
    completefunc: function (xData, Status) {
        var out = "<ul>";
        $(xData.responseXML).find("Permission").each(function () {
            if ($(this).attr("MemberIsUser") === "True") {
                out += "<li>User: " + $(this).attr("UserLogin") + "</li>";
            } else {
                out += "<li>Group: " + $(this).attr("GroupName") + "</li>";
            }
            var readmask = 0x0000000000000001;
            var addmask = 0x0000000000000002;
            var editmask = 0x0000000000000004;
            var deletemask = 0x0000000000000008;
            out += "<li>Mask: " + $(this).attr("Mask") + "</li>";
            var canread = readmask & $(this).attr("Mask").toString(16) > 0 ? "Yes" : "No";
            var canadd = addmask & $(this).attr("Mask").toString(16) > 0 ? "Yes" : "No";
            var canedit = editmask & $(this).attr("Mask").toString(16) > 0 ? "Yes" : "No";
            var candelete = deletemask & $(this).attr("Mask").toString(16) > 0 ? "Yes" : "No";
            out += "<li>Can Read: " + canread + "</li>";
            out += "<li>Can Add: " + canadd + "</li>";
            out += "<li>Can Edit: " + canedit + "</li>";
            out += "<li>Can Delete: " + candelete + "</li>";
        });
        out += "</ul>";
        $('#divid').html(out);
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接