CSOM为SharePoint列表上的组提供编辑权限

时间:2018-05-23 06:52:30

标签: sharepoint permissions sharepoint-online csom

我在CSOM for 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 :(得分:0)

你可以做类似这样的事情:

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中可用。如果有效,请告诉我。

答案 1 :(得分:0)

你可以试试这个

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()