【问题标题】:Why are items with unique permissions being affected when I delete Users/Groups in the list permission当我删除列表权限中的用户/组时,为什么具有唯一权限的项目会受到影响
【发布时间】:2018-03-10 22:04:16
【问题描述】:

我是 SharePoint 和 csom 的新手。我试图弄清楚如何更改列表中现有的组/用户权限,而不会无意中更改该列表中的项目权限。代码如下:

myList.BreakRoleInheritance(true, true);

var roletypes = ctx.Web.RoleDefinitions.GetByType(RoleType.Reader);
ctx.ExecuteQuery();
RoleDefinitionBindingCollection colRoleDefinitionBinding = new RoleDefinitionBindingCollection(ctx);
colRoleDefinitionBinding.Add(roletypes);

// if user, add him with read access
if (!item.ContainsKey("group"))
{
     Principal entity = ctx.Web.EnsureUser(item["user"]);
     myList.RoleAssignments.GetByPrincipal(entity).DeleteObject();
     myList.RoleAssignments.Add(entity, colRoleDefinitionBinding);
}
else
{
     Group entity = ctx.Web.SiteGroups.GetById(Int32.Parse(item["group"]));
     myList.RoleAssignments.GetByPrincipal(entity).DeleteObject();
     myList.RoleAssignments.Add(entity, colRoleDefinitionBinding);
}

ctx.ExecuteQuery();

我基本上只是删除用户或组,然后使用新权限再次添加它们。删除用户/组时,如果该用户或组存在于项目权限中,则它也会被删除。我不明白的是为什么项目权限在具有唯一权限时被篡改?有没有其他方法可以在不影响项目权限的情况下更改列表权限?

【问题讨论】:

    标签: c# sharepoint permissions sharepoint-2010 csom


    【解决方案1】:

    想通了。只需使用ImportRoleDefinitionBindings 更改权限:

    Principal entity = ctx.Web.EnsureUser(item["user"]);
    roleAssignment = myList.RoleAssignments.GetByPrincipal(entity);
    roleAssignment.ImportRoleDefinitionBindings(colRoleDefinitionBinding);
    roleAssignment.Update();
    ctx.ExecuteQuery();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2015-03-30
      • 2019-06-03
      • 1970-01-01
      • 2019-08-05
      • 2023-02-09
      • 1970-01-01
      相关资源
      最近更新 更多