CSOM дает разрешение на редактирование для группы в списке SharePoint - PullRequest
0 голосов
/ 23 мая 2018

Я создаю новый список в CSOM для SharePoint Online, но я очень новичок в этом, поэтому я застрял при изменении разрешений.Есть 3 группы пользователей, владельцы, посетители и участники.Я хотел бы предоставить посетителям права на редактирование этого списка.

Мне удалось разорвать наследование и получить всех посетителей с помощью следующего кода, но я застрял на том, как дать им новые разрешения

newList.BreakRoleInheritance(false, true);
var visitors = ctx.Web.SiteGroups;
ctx.Load(visitors, groupitems => groupitems.Include(groupitem => groupitem.Title,
    groupitem => groupitem.LoginName).Where(groupitem=> groupitem.Title == visitorsGroupName));

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вы можете попробовать это

var EditRole= new RoleDefinitionBindingCollection(ctx);
EditRole.Add(ctx.Web.RoleDefinitions.GetByType(RoleType.Editor));
Microsoft.SharePoint.Client.Group visitors= ctx.Web.SiteGroups.GetByName("visitors");
ctx.Load(visitors);
newList.RoleAssignments.Add(visitors, EditRole);
ctx.ExecuteQuery()
0 голосов
/ 23 мая 2018

Вы можете сделать что-то похожее на это:

foreach(var grpUser in grpUsers)
{
    Principal user = ctx.Web.SiteUsers.GetByLoginName(grpUser);

    RoleDefinition writeDefinition = ctx.Web.RoleDefinitions.GetByName("Edit");
    RoleDefinitionBindingCollection roleDefCollection = new RoleDefinitionBindingCollection(ctx);
    roleDefCollection.Add(writeDefinition);
    RoleAssignment newRoleAssignment = ctx.Web.RoleAssignments.Add(grpUser, roleDefCollection);
}

ctx.ExecuteQuery();

Это предполагает, что существует уровень прав «Редактировать», который доступен по умолчанию в SharePoint.Дайте мне знать, если это работает.

...