如何将我的自定义权限级别分配给我的TestGroup?

时间:2014-02-10 08:27:22

标签: c# sharepoint-2010

我创建了一个名称: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。有谁知道我做错了什么?

收到此错误:无法更新不属于权限级别分配集合的权限级别分配。

1 个答案:

答案 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();