To modifies the permissions, you have to use the BasePermissions property (SPBasePermissions enumeration): http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.sproledefinition.basepermissions.aspx
Hereunder is the Permission Levels page of a SharePoint site before:

The following piece of code shows how to create a new permission level:
using (SPSite siteCollection = new SPSite("http://myserver:38000/sites/Test"))
{ using (SPWeb site = siteCollection.OpenWeb(siteCollection.RootWeb.ID)) { try { site.AllowUnsafeUpdates = true; // This code adds a new permission level SPRoleDefinition newRoleDefinitionTest = new SPRoleDefinition();newRoleDefinitionTest.BasePermissions = SPBasePermissions.ViewListItems | SPBasePermissions.OpenItems | SPBasePermissions.EditListItems | SPBasePermissions.AddListItems | SPBasePermissions.ViewVersions;
newRoleDefinitionTest.Name = "Test"; newRoleDefinitionTest.Description = "This is a permission level created for testing.";site.RoleDefinitions.Add(newRoleDefinitionTest);
site.Update();
}
catch(Exception ex)
{ Console.WriteLine(ex.Message);}
finally { site.AllowUnsafeUpdates = false;}
}
}
The following piece of code shows how to copy a permission level (in this case the permission level of the Reader role) and to add two new permissions to it:
using (SPSite siteCollection = new SPSite("http://myserver:38000/sites/Test"))
{ using (SPWeb site = siteCollection.OpenWeb(siteCollection.RootWeb.ID)) { try { site.AllowUnsafeUpdates = true; // This code copies the Read permission level (Reader role) and adds AddListItems and EditListItems permissionsSPRoleDefinition roleDefinitionRead = site.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleDefinition newRoleDefinitionAdvancedRead = new SPRoleDefinition(roleDefinitionRead);newRoleDefinitionAdvancedRead.BasePermissions |= SPBasePermissions.AddListItems | SPBasePermissions.EditListItems;
newRoleDefinitionAdvancedRead.Name = "Advanced Read"; newRoleDefinitionAdvancedRead.Description = "This the Read permission level + AddListItems + EditListItems";site.RoleDefinitions.Add(newRoleDefinitionAdvancedRead);
site.Update();
}
catch(Exception ex)
{ Console.WriteLine(ex.Message);}
finally { site.AllowUnsafeUpdates = false;}
}
}
Hereunder are the Permission Levels page and the Edit Permission Level pages after:





1 comment:
Great code!
Post a Comment