我创建了一个名称:TestGroup 和一个权限级别名称:Custompermisionlevel
如何以编程方式将权限级别(Custompermisionlevel)分配给我的组?
我正在使用此代码:
public void SetPermissionsToGroup()
{
using (var site = new SPSite("http://sp2010:8888"))
{
using (var web = site.OpenWeb())
{
//Get group and group roles
var group = web.SiteGroups["TestGroup"];
var roles = new SPRoleAssignment(group);
//Add another role
roles.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Custompermisionlevel));
roles.Update();
}
}
}
我没有在SPRoleType中获得我的Custompermisionlevel。有谁知道我做错了什么?
收到此错误:无法更新不属于权限级别分配集合的权限级别分配。
答案 0 :(得分:1)
This answer有一些很好的代码。您需要做的是通过引用SPRoleDefinition
上的特定SPWeb
来获取对自定义权限级别的引用。
以下是一些示例代码,它将权限级别“我的测试级别”分配给指定SPUser的SPList。
SPWeb currentWeb = topSite.RootWeb;
SPList testList = currentWeb.Lists["ListName"];
SPUser currentUser = currentWeb.SiteUsers["domain\\userName"];
SPRoleAssignment customRoleAssignment = new SPRoleAssignment(currentUser);
SPRoleDefinition customRoleDefinition = currentWeb.RoleDefinitions["My Test Level"];
customRoleAssignment.RoleDefinitionBindings.Add(customRoleDefinition);
testList.BreakRoleInheritance(false);
testList.RoleAssignments.Add(customRoleAssignment);
testList.Update();