【问题标题】:SharePoint - converting permission mask into roleSharePoint - 将权限掩码转换为角色
【发布时间】:2010-10-05 14:40:58
【问题描述】:

我在检索列表或网站的权限时遇到问题。我正在使用 SharePoint 的 Permission Web Service 和 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 转换为 Mask 以进行比较?或者有没有更简单的方法可以将权限掩码转换为它所属的角色(权限级别)?

【问题讨论】:

标签: sharepoint permissions


【解决方案1】:

感谢@zanlok answer,我制作了这个 javascript 示例

我用过 JQuery、SPServices js (http://spservices.codeplex.com/) 和这个面具代码的链接 http://msdn.microsoft.com/en-us/library/dd304243%28PROT.13%29.aspx 我希望这对您有所帮助,我这样做是因为我也需要它,但它也可能对其他人有所帮助。

你需要用你要放置html的控件的值替换divid,用列表名称替换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);
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2021-07-15
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多