Найти администратора библиотеки spdocument - PullRequest
0 голосов
/ 18 октября 2011

У меня есть библиотека документов, которая не наследует права доступа к сайту (настроено пользовательское разрешение). Теперь я хочу узнать, у кого есть права администратора на эту библиотеку, используя C #.

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

Спасибо

1 Ответ

0 голосов
/ 18 октября 2011

Нет такой вещи как Администратор списка .Но вы можете получить пользователей и группы с правами управления списками, хотя:

SPList list = // get your list
IEnumerable<SPPrincipal> admins = list.RoleAssignments.Cast<SPRoleAssignment>()
  .Where(ra =>
    ra.RoleDefinitionBindings.Cast<SPRoleDefinition>()
      .Any(r => (r.BasePermissions & SPBasePermissions.ManageLists) == SPBasePermissions.ManageLists))
  .Select(ra => ra.Member);

Обновление:

Разрешения для SPFolder можно проверить с помощью соответствующих SPListItem.Это можно получить с помощью свойства SPFolder.Item.Поскольку и SPListItem, и SPList наследуют от SPSecurableObject, проверка для SPListItem такая же, как описано выше.

Чтобы отличить SPUser от SPGroup, просто проверьтетип SPRoleAssigment.Member:

IEnumerable<SPUser> adminUsers = admins.OfType<SPUser>();

Имейте в виду, что объект SPUser может представлять группу безопасности AD.Это можно проверить с помощью свойства SPUser.IsDomainGroup.

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