【问题标题】:CSOM give edit permissions to group on SharePoint listCSOM 为 SharePoint 列表上的组授予编辑权限
【发布时间】:2018-05-23 06:52:29
【问题描述】:

我正在 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));

【问题讨论】:

    标签: sharepoint permissions sharepoint-online csom


    【解决方案1】:

    你可以做类似的事情:

    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 中默认存在可用的“编辑”权限级别。让我知道它是否有效。

    【讨论】:

    • 我已经按照你的回答并让它运行没有错误,但是当我检查列表中的用户权限时,他们仍然只有“读取”权限。知道我可能做错了什么吗?
    • 你可以在这里找到代码:pastebin.com/5AgCRkn9 除了权限之外一切正常
    • 发现问题,只好改newList.BreakRoleInheritance(false, true);到 newList.BreakRoleInheritance(true, true);然后你的代码就成功了,谢谢你的帮助
    【解决方案2】:

    你可以试试这个

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

    【讨论】:

      猜你喜欢
      • 2014-03-13
      • 2017-01-21
      • 1970-01-01
      • 2018-12-15
      • 2014-03-15
      • 2023-03-11
      • 1970-01-01
      • 2023-03-19
      • 2017-07-06
      相关资源
      最近更新 更多