Как проверить пользовательские разрешения в SharePoint 2010 с помощью клиентской объектной модели? - PullRequest
3 голосов
/ 20 апреля 2010

Следующий код всегда возвращает false (что неверно, поскольку у пользователя есть разрешение «Полный доступ» на уровне сайта):

Site site;
BasePermissions permissionMask;
ClientResult<bool> result;

permissionMask = new BasePermissions();
permissionMask.Set(PermissionKind.ManageWeb);
result = site.DoesUserHavePermissions(permissionMask);

return result.Value;

Я пытаюсь использовать новый SharePoint 2010Клиентская объектная модель.Я был взволнован, когда обнаружил метод DoesUserHavePermissions, но, похоже, я не совсем уверен, знаю ли я, как его использовать.Я понятия не имею, использую ли я правильную маску или мне нужно указать учетную запись пользователя, для которой я хочу проверить уровень разрешений?Любая помощь будет принята с благодарностью.Благодарю.

Ответы [ 2 ]

4 голосов
/ 11 мая 2010

Одна важная вещь отсутствовала - клиентский контекст. Этот объект отвечает за фактическое выполнение запроса для любых объектов объектной модели клиента SharePoint.

Код должен быть изменен на следующее:

ClientContext clientContext;
Site site;
BasePermissions permissionMask;
ClientResult<bool> result;

permissionMask = new BasePermissions();
permissionMask.Set(PermissionKind.ManageWeb);
//if we want to check ManageWeb permission
clientContext = new ClientContext(siteUri);
//siteUri is a method parameter passed as a string
clientContext.Credentials = credential;
//credential is a method parameter passed as a NetworkCredential object
//that is the user for which we are checking the ManageWeb permission
site = clientContext.Web;
result = site.DoesUserHavePermissions(permissionMask);

return result.Value;

Это вернет true, если пользователю назначены разрешения ManageWeb, или false, если иначе. Полный список перечислений разрешений можно найти на странице MSDN .

1 голос
/ 09 августа 2013

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

using (var context = new ClientContext(siteUrl))
{
   context.Load(context.Web);
   context.ExecuteQuery();
   BasePermissions permissionMask;
   ClientResult<bool> hasPermissions;
   permissionMask = new BasePermissions();
   permissionMask.Set(PermissionKind.ManageWeb);
   hasPermissions = context.Web.DoesUserHavePermissions(permissionMask);

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