Чтобы установить разрешения прагматично, вам нужно сделать следующее.
1) Роль наследования предмета
2) Добавьте новое назначение роли
Чтобы разорвать наследованность роли разрыва элемента, вы вызываете метод BreakRoleInheritance для элемента, передав значение true, вы скопируете текущие разрешения для списка для элемента.
item.BreakRoleInheritance(false);
Затем необходимо получить коллекцию назначений ролей и добавить в нее новое назначение роли. Назначение роли создается для SPPrincipal и имеет привязанное к нему SPRoleDefinition.
SPRoleAssignmentCollection rolesAssignments = item.RoleAssignments;
SPRoleAssignment userRoleAssignment = new SPRoleAssignment(principal);
userRoleAssignment.RoleDefinitionBindings.Add(roleDefinition);
rolesAssignments.Add(userRoleAssignment);
Чтобы получить определение роли, вы можете перейти к текущему свойству SPWeb FirstUniqueRoleDefinitionWeb, чтобы сохранить все настройки, сделанные для разрешений ваших сайтов, а затем использовать коллекцию определений ролей SPWeb. (Я не слишком уверен в шаблоне удаления для свойства FirstUniqueRoleDefinitionWeb, если вы используете SPContext, не удаляйте его)
if (web.FirstUniqueRoleDefinitionWeb != null)
{
using (SPWeb firstUniqueRoleDefinitionWeb = web.FirstUniqueRoleDefinitionWeb)
{
return firstUniqueRoleDefinitionWeb.RoleDefinitions[roleName];
}
}
return web.RoleDefinitions[roleName];
Надеюсь, это поможет вам в правильном направлении