如何为SPItem授予SPGroup权限?

5

我试图找到一个简单的例子,如何为列表项Z给予特定的Sharepoint组X权限级别Y,但是找不到示例代码。

我能想到的最短的代码是为该项分配特定用户权限(在这种情况下是“读取器”):

SPRoleDefinition spRole = spWeb.RoleDefinitions["Reader"];    
SPRoleAssignment roleAssignment= new SPRoleAssignment("//myDomain/myUser",
                                                      "none@example.org",
                                                      "Name", "Notes");    
roleAssignment.RoleDefinitionBindings.Add(spRole);

SPListItem listItem = spWeb.GetListItem("http://<URL to item somewhere on the Site>");
listItem.BreakRoleInheritance(true);
listItem.RoleAssegnments.Add(roleAssignment);
listItem.Update();

我知道SPRoleAssignment.Add也可以接受一个SPPrincipal,而SPPrincipal反过来是一个 - 我只是不知道如何编写它。

请给我一些示例代码,演示如何将现有的Sharepoint组(例如“MyGroup”)添加到我的项目中,并授予“读取者”权限级别。

1个回答

11

实际上很容易 - 我只需要将一个SPGroup添加到角色分配中,而不是使用SPRoleAssignment("user","name"...)。以下是完整的代码:

//note: using SiteGroups is "safer",
//because also groups which don't yet have any permissions are included
SPGroup spGroup = spWeb.SiteGroups["MyGroup"];
SPRoleDefinition spRole = spWeb.RoleDefinitions["Read"]; 

SPRoleAssignment roleAssignment= new SPRoleAssignment(spGroup);
roleAssignment.RoleDefinitionBindings.Add(spRole);

SPListItem listItem = spWeb.GetListItem("http://<URL to item somewhere on the Site>");
listItem.BreakRoleInheritance(true);
listItem.RoleAssignments.Add(roleAssignment);
listItem.Update();

当我在构造函数中使用spgroup时,roleAssignment返回null值。该怎么办?找到了组,但无法正常工作。 - Mohemmad K
1
一个打字错误。应该是RoleAssignments而不是RoleAssegnments。 - Ruchira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接