将Permission Mask转换为GetPermissionCollection的角色

时间:2010-02-09 04:12:53

标签: java sharepoint permissions

我们需要检查用户是否对Sharepoint文档库中的文件夹具有“上载”访问权限。为此,我在文档库上使用Permissions webservice的“GetPermissionCollection”方法。我收到的回复是以下格式:

我无法将Permission掩码转换为角色。我在Java中这样做,我没有SPBasePermissions类。

Java中是否有办法将Mask转换为角色?

提前致谢

2 个答案:

答案 0 :(得分:1)

是的,你只需要对它进行按位操作。您需要硬连线位掩码以获得您关心的权限,但这应该足够安全,因为这些在SharePoint 2010中不会更改。

答案 1 :(得分:0)

我找到了这个链接: Permission/Deny Mask in SharePoint 这说明了这个按位AND。 您还应该使用此链接: http://msdn.microsoft.com/en-us/library/dd304243%28PROT.13%29.aspx

其中Enums the Masks获取权限。

我还制作了一个javascript示例,可以帮助您...... 但是你必须把它转换成java

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

您需要将LIST NAME替换为列表名称,并找出上传的掩码。

该脚本将吐出有权访问列表的所有人,并说明他们是否可以阅读,添加,更改和删除内容。希望这会对你有所帮助。

$('#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);
    }
});