Получить все разрешения на доступ к папке SharePoint для конкретного пользователя - PullRequest
2 голосов
/ 02 марта 2011

Я пытаюсь получить права доступа ко всем папкам (не скрытым) на сайте для конкретного пользователя

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
             {
                 SPWeb web = site.OpenWeb();
                 SPFolderCollection folders = web.Folders;;
                 foreach (SPFolder folder in web.Folders)
                 {


                     lblFolder.Text += "<br/><STRONG>" + folder.Name + "</STRONG>

<br/>";
 foreach (SPRoleAssignment folderRole in folder.Item.RoleAssignments)
                         { }// throws exception object specifies does not belong to list



                 }

Не только имя, но мне нужны разрешения для этой папки, пожалуйста, помогите !!

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 апреля 2015

Вы захватываете папки, когда, возможно, вам следует захватывать элементы списка в библиотеке документов? То есть, предполагая, что они наследуют сверху.

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["Documents"];
        SPQuery qry = new SPQuery();
        qry.Query = "<Where><Eq><FieldRef Name='Title'><Value Type='Text'>"+title+"</Value></Eq></Where>";
        SPListItemCollection docColl = new SPListItemCollection(qry);
        List<string> perms = new List<string>();

        if (docColl.Count > 0)
        {
            SPListItem fldrItem = docColl[0];
            if (fldrItem.RoleAssignments.Count > 0) {

                SPRoleAssignmentCollection assignColl = fldrItem.RoleAssignments;
                foreach (SPRoleAssignment assignment in assignColl)
                {
                    perms.Add(assignment.Member.LoginName);
                    Console.WriteLine("Perms: " + assignment.Member.LoginName);
                }
            }
        }
    }
}
0 голосов
/ 03 марта 2011

SPWeb.Folders предоставляет вам коллекцию «подпапок» вашего веб-сайта (например, _catalogs, Lists, ...), ни у одного из которых нет связанного элемента списка, некоторые из них, например, общие документы, могут иметь связанный список , но в этом случае это корневая папка, в которой нет элемента списка (права исходят непосредственно из списка).

Таким образом, вы должны проверить, является ли Item пустым (возможно, в этом случае используйте ParentListId, чтобы получить список, если это не Guid.Empty), а затем продолжить рекурсивный анализ SubFolders

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...