Преобразовать маску разрешения в роли для GetPermissionCollection - PullRequest
3 голосов
/ 09 февраля 2010

У нас есть требование, при котором нам нужно проверить, есть ли у пользователя доступ «Загрузить» к папке в библиотеке документов Sharepoint. Для этого я использую метод GetPermissionCollection веб-службы Permissions в библиотеке документов. Ответ, который я получаю, имеет следующий формат:

Я не могу преобразовать маску разрешения в роль. Я делаю это на Java, и у меня нет класса SPBasePermissions.

Есть ли способ в Java преобразовать Маску в роль?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Да, вам просто нужно делать побитовые операции с ним. Вам нужно будет жестко установить битовую маску для разрешений, которые вас интересуют, но это должно быть достаточно безопасно, так как они не меняются в SharePoint 2010.

0 голосов
/ 01 февраля 2011

Я нашел эту ссылку: Разрешение / Запретить маску в SharePoint который говорит что-то об этом побитовом И. Вы также должны использовать эту ссылку: http://msdn.microsoft.com/en-us/library/dd304243%28PROT.13%29.aspx

, который перечисляет маски для разрешений.

Я также сделал пример javascript, который может помочь вам ... однако вам придется конвертировать его в Java

Я использовал JQuery, SPServices js (http://spservices.codeplex.com/) и эта ссылка для масок кодов http://msdn.microsoft.com/en-us/library/dd304243%28PROT.13%29.aspx Надеюсь, это поможет вам, я сделал это, потому что мне это тоже было нужно, однако это может помочь и другим.

Вам нужно заменить имя списка здесь именем списка и выяснить, какая маска для загрузки.

Скрипт плюет всем, у кого есть доступ к списку, и говорит, могут ли они читать, добавлять, изменять и удалять объекты. Надеется, что это поможет вам.

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