为什么我在列表权限中删除Users/Groups时,具有唯一权限的项目会受到影响
Why are items with unique permissions being affected when I delete Users/Groups in the list permission
我是 SharePoint 和 csom 的新手。我试图弄清楚如何更改列表中现有的 group/user 权限,而不会无意中更改该列表中的项目权限。这是代码:
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();
我基本上只是删除用户或组,然后使用新权限再次添加它们。删除 user/group 时,如果该用户或组存在于项目权限中,则它也会被删除。我不明白的是为什么在具有唯一权限的情况下项目权限被篡改?有没有其他方法可以在不影响项目权限的情况下更改列表权限?
想通了。只需使用 ImportRoleDefinitionBindings
更改权限:
Principal entity = ctx.Web.EnsureUser(item["user"]);
roleAssignment = myList.RoleAssignments.GetByPrincipal(entity);
roleAssignment.ImportRoleDefinitionBindings(colRoleDefinitionBinding);
roleAssignment.Update();
ctx.ExecuteQuery();
我是 SharePoint 和 csom 的新手。我试图弄清楚如何更改列表中现有的 group/user 权限,而不会无意中更改该列表中的项目权限。这是代码:
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();
我基本上只是删除用户或组,然后使用新权限再次添加它们。删除 user/group 时,如果该用户或组存在于项目权限中,则它也会被删除。我不明白的是为什么在具有唯一权限的情况下项目权限被篡改?有没有其他方法可以在不影响项目权限的情况下更改列表权限?
想通了。只需使用 ImportRoleDefinitionBindings
更改权限:
Principal entity = ctx.Web.EnsureUser(item["user"]);
roleAssignment = myList.RoleAssignments.GetByPrincipal(entity);
roleAssignment.ImportRoleDefinitionBindings(colRoleDefinitionBinding);
roleAssignment.Update();
ctx.ExecuteQuery();