SharePointOnline CSOM доступ запрещен по запросу RoleAssignmentCollection для участника
Я пишу адаптер SharePoint с использованием Microsoft.SharePointOnline.CSOM версии 16.1.7115.1200 (текущая версия).
Требование клиента - получить информацию о том, может ли текущий пользователь переименовать определенную папку. Если пользователь "Владелец", я могу сделать это, используя:
using (ClientContext clientContext = new ClientContext("sharepoint URL"))
{
clientContext.Credentials = _credentials;
List library = clientContext.Web.Lists.GetByTitle(_libraryTitle);
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View Scope='RecursiveAll'>" +
"<Query>" +
"<Where>" +
"<Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>1</Value></Eq>" +
"</Where>" +
"</Query>" +
"</View>";
ListItemCollection folders = library.GetItems(camlQuery);
clientContext.Load(folders);
foreach (ListItem folder in folders)
{
clientContext.Load(folder.RoleAssignments);
clientContext.ExecuteQuery();
User user = clientContext.Web.EnsureUser("sharepointAccount@sharepoint.com");
clientContext.Load(user, u => u.LoginName);
clientContext.ExecuteQuery();
ClientResult<BasePermissions> permissions = folder.GetUserEffectivePermissions(user.LoginName);
RoleAssignmentCollection assignments = folder.RoleAssignments;
clientContext.Load(assignments, ac => ac.Include(
a => a.RoleDefinitionBindings, a => a.Member.LoginName));
clientContext.ExecuteQuery();
bool canEdit = permissions.Value.Has(PermissionKind.EditListItems);
}
}
Когда пользователь "Пользователь", я получаю:
Необработанное исключение типа Microsoft.SharePoint.Client. ServerUnauthorizedAccessException 'произошло в Microsoft.SharePoint.Client.Runtime.dll Дополнительная информация: доступ запрещен. У вас нет разрешения на выполнение этого действия или доступ к этому ресурсу.
Вопрос: Есть ли какой-нибудь возможный способ получения информации, позволяющей переименовать информацию независимо от роли пользователя? Или, может быть, есть другой подход, который мне не хватает.